なんとなくHSP3用のHit&Blowのコードを書きました。以前はjsで同様に実装したことがあるけど以前のはSwitchでgoto紛いのことをやって凄いことになってた気がする。http://gspectool.ifdef.jp/hitblow/DOS.html
なんとなくHSP3用のHit&Blowのコードを書きました。以前はjsで同様に実装したことがあるけど以前のはSwitchでgoto紛いのことをやって凄いことになってた気がする。http://gspectool.ifdef.jp/hitblow/DOS.html
#runtime "hsp3cl"#cmpopt varinit 1randomize#module Program#defcfunc getDigitsdim lnrepeatmes "桁数を入力してください > ",1input ln,,2digit=int(ln)if 1<=digit & digit<=9: breakmes "1-9の数字を入力してください。"loopreturn digit#defcfunc getSeq int _digit#const nums 10dim seq,numsrepeat numsseq.cnt=cntlooprepeat nums-1,1: i=nums-cntr=rnd(i+1)tmp=seq.iseq.i=seq.rseq.r=tmploops=""repeat _digits+=seq.cntloopreturn s#defcfunc getInputSeq int _digit,int _chkCntnumList="0123456789"sdim lnrepeatmes strf("[%d] ",_chkCnt),2input ln,,2lnLength=strlen(ln)isDigit=_digit=lnLengthisNum=1repeat lnLengthif -1=instr(numList,,strmid(ln,cnt,1)){isNum=0break}loopisUnique=1repeat lnLengthi=cntrepeat lnLengthif i!cnt && strmid(ln,i,1)=strmid(ln,cnt,1) {isUnique=0break}loopif 0=isUnique: breakloopif isDigit & isNum & isUnique: breakmes "入力が不正です。"loopreturn ln#deffunc maindigit=getDigit()ans=getSeq(digit)repeatuser=getInputSeq(digit,cnt)hit=0blow=0repeat digitif strmid(ans,cnt,1)=strmid(user,cnt,1) {hit++}else:if -1!instr(ans,,strmid(user,cnt,1)) {blow++}loopmes strf("hit: %d blow: %d",hit,blow)if hit=digit: breakloopmes "Congratulation!"sdim lninput ln,,2return#globalmain