#!/bin/bash nb[0]=`expr $RANDOM % 8 + 1` #4桁の数字の1桁目に1〜9の適当な値を入れる while : do nb[1]=`expr $RANDOM % 8 + 1` #4桁の数字の2桁目に1〜9の適当な値を入れる if [ ${nb[1]} -ne ${nb[0]} ] #それが1桁目の値と違ければ then break #次の桁へ fi done #同じならもう一度やり直し while : do nb[2]=`expr $RANDOM % 8 + 1` #4桁の数字の3桁目に1〜9の適当な値を入れる if [ ${nb[2]} -ne ${nb[0]} -a ${nb[2]} -ne ${nb[1]} ] #それが1桁目2桁目の値と違ければ then break #次の桁へ fi done #同じならもう一度やり直し while : do nb[3]=`expr $RANDOM % 8 + 1` #4桁の数字の4桁目に1〜9の適当な値を入れる if [ ${nb[3]} -ne ${nb[0]} -a ${nb[3]} -ne ${nb[1]} -a ${nb[3]} -ne ${nb[2]} ] #それが1桁目2桁目3桁目の値と違ければ then break #問題の数字のできあがり fi done #同じならもう一度やり直し #printf "%d%d%d%d\n" "${nb[@]}" #試運転用 printf "" > quiz3.txt #quiz3.txtを整地 echo "Type your first answer!" #入力を促す anst=0 #回答回数カウンターをリセット while : #以下を繰り返す do read ans #入力された数字をansに読み込む echo $ans >> quiz3.txt #入力された数字を出力 anst=`expr $anst + 1` #回答回数カウンターを1上げる hit=0 #hitの回数をリセット blow=0 #blowの回数をリセット an[0]=`echo $ans | cut -c1` #入力された数字の1桁目を配列"an"の0番地に読み込む an[1]=`echo $ans | cut -c2` #入力された数字の2桁目を配列"an"の1番地に読み込む an[2]=`echo $ans | cut -c3` #入力された数字の3桁目を配列"an"の2番地に読み込む an[3]=`echo $ans | cut -c4` #入力された数字の4桁目を配列"an"の3番地に読み込む nn=0 #問題の数字の桁カウンターをリセット while : #↓hitおよびblow探しのためのループ do if [ ${an[$nn]} -eq ${nb[$nn]} ] #同じ桁の数字が同じとき then hit=`expr $hit + 1` #hitの回数を1増やす fi mm=0 #入力された数字の桁カウンターをリセット while : #blow探しのためのループ do if [ ${an[$mm]} -eq ${nb[$nn]} -a $nn -ne $mm ] #違う桁の数字が同じとき then blow=`expr $blow + 1` #blowの回数を1増やす fi mm=`expr $mm + 1` #入力された数字の桁カウンターを1増やす if [ $mm -gt 3 ] #入力された数字の桁カウンターが3より多くなったら then break #blow探しはおしまい fi done #入力された数字の次の桁へ nn=`expr $nn + 1` #問題の数字の桁カウンターを1増やす if [ $nn -gt 3 ] #問題の数字の桁カウンターが3より多くなったら then break #hitおよびblow探しはおしまい fi done #問題の数字の次の桁へ if [ $hit -eq 4 ] #全てhitしたら then break #繰り返し終わり fi echo "$hit hit $blow blow" #hit回数とblow回数を表示 echo "$hit hit $blow blow" >> quiz3.txt #hit回数とblow回数を出力 done #以上を繰り返し echo "Your number matches the answer!!" #おわりのメッセージを表示 echo "You answered $anst times to get the answer." #回答回数を表示 echo "Your number matches the answer!!" >> quiz3.txt #おわりのメッセージを出力 echo "You answered $anst times to get the answer." >> quiz3.txt #回答回数を出力 exit #おしまい