Bashシェルスクリプトを使ってヌメロン(Numer0n)を作ロン♪ということで作ってみました。
事前にコンピュータが定める4桁の数字をあてに行くゲームです。
Wikipedia:ヌメロンのルールはWikipediaをご参照ください。
今回作成したものは、一回ごとに継続して挑戦するかを確認する仕様となっています。
もしy/nでの回答を行わずに継続して実行したい場合は「-y」オプションをつけてください。
実行例:
# ./numeron.sh --------------------------------------- Please choose 4 numbers from 0 to 9 and type in as 4 digit number [eg.1234]: 1234 --------------------------------------- 0 eat 1 bite continue?[y/n]: y --------------------------------------- Please choose 4 numbers from 0 to 9 and type in as 4 digit number [eg.1234]: 1238 --------------------------------------- 0 eat 2 bite continue?[y/n]: y
「-y」オプションを利用した場合
# ./numeron.sh -y
---------------------------------------
Please choose 4 numbers from 0 to 9 and type in as 4 digit number [eg.1234]: 1234
---------------------------------------
0 eat 3 bite
----> try again
---------------------------------------
Please choose 4 numbers from 0 to 9 and type in as 4 digit number [eg.1234]: 5234
---------------------------------------
0 eat 2 bite
----> try again
シェルスクリプトの記述は以下のとおり
#!/bin/bash arr=({0..9}) declare -a kotae for i in `shuf --input-range=0-$(( ${#arr[*]} - 1 )) | head -4` do kotae=("${kotae[@]}" "${arr[$i]}") done ks=`echo ${kotae[@]} | sed -e 's/ //g'` # cheat #echo $ks a="y" while [ $a == "y" ]; do userInput='' while [ -z ${userInput} ] ; do echo "---------------------------------------" echo -n "Please choose 4 numbers from 0 to 9 and type in as 4 digit number [eg.1234]: " read userInput echo "---------------------------------------" dup=`echo $userInput | grep -o . | sort | uniq -c | grep -v "1 [0-9]" | wc -l` if ! [[ $userInput =~ ^[0-9]{4}$ ]] || ! [ $dup -eq 0 ] ; then echo "not good input... try agin!" userInput='' fi done u=(`echo $userInput | grep -o .`) if [ $userInput = ${ks} ]; then echo " 4 eat!! GREAT!!! " exit else E=0 B=0 for n in {0..3}; do if [ ${u[$n]} = ${kotae[$n]} ]; then E=$((E+1)) elif [ `echo ${ks} | grep ${u[$n]}` ]; then B=$((B+1)) fi done echo "$E eat $B bite" fi if [ "$1" = "-y" ]; then echo " ----> try again" else echo -n "continue?[y/n]: " read a fi done
スクリプトのダウンロードはこちらからどぞ
コメント