|
|
|
Баловство. Быки-коровы
|
|||
|---|---|---|---|
|
#18+
Логическая игрушкаPF ; n List,quit,CNumber,HNumber,First,win,q,CurrMove,Cur,i,List1,List2 n Len,AIMethod s Len=4 ;Количество цифр в ходе s AIMethod=1 ;Вариант алгоритма вычисления хода s List="^mtemp(""PF"",$J)" s List1="^mtemp(""PFO"",$J)" s List2="^mtemp(""PFT"",$J)" k @List d InitList s quit=0 f d q:quit .k CurrMove .d RandomList .s CNumber=@List@($r(@List)+1) .s First=$$YesNo("You first?") .s HNumber=$$EntNum("Enter your number: ") .s win=0,CurrMove=0 .i First s win=$$HMove() .i 'win f d q:win ..w !!,"Current moves: ",!,?11,"You "_$$p(Len)_"|B|C|Comp"_$$p(Len)_"|B|C|",! ..s i="" f s i=$o(CurrMove(i)) q:i="" d ...w ?11,$tr($g(CurrMove(i,"H")),",","|"),?19,"|",$tr($g(CurrMove(i,"C")),",","|"),! ..w ! ..s win=$$CMove() q:win ..s win=$$HMove() q:win .w !,$s(win=1:"You win!!!",1:"You lose"),! .s quit='$$YesNo("Play again?") k @List q CMove() ; i AIMethod=2 q $$CMove1() n Move,ret,i,j,q s Move="" i CurrMove=0 d .s Move=@List@(1) .s Cur=1 e d .s i=Cur f s i=$o(@List@(i)) q:i="" d q:Move'="" ..s q=0 ..s j="" f s j=$o(CurrMove(j)) q:j="" d q:q ...q:'$d(CurrMove(j,"C")) ...i $$CheckMove(@List@(i),$p(CurrMove(j,"C"),","))'=$p(CurrMove(j,"C"),",",2,3) s q=1 q ..i 'q s Move=@List@(i),Cur=i s ret=$$CheckMove(HNumber,Move) s CurrMove(CurrMove,"C")=Move_","_ret w "My move: "_Move," - ",$p(ret,",")," bulls ", $p(ret,",",2)," cows",! i $i(CurrMove) i Move=HNumber q 2 q 0 CMove1() n Move,ret,i,j,k,m,n s Move="" i CurrMove=0 d .s Move=@List@(1) .s Cur=1 .m @List1=@List .k @List1@(1) e d .s i="" f s i=$o(@List1@(i)) q:i="" d ..s j="" f s j=$o(CurrMove(j)) q:j="" d ...q:'$d(CurrMove(j,"C")) ...i $$CheckMove(@List1@(i),$p(CurrMove(j,"C"),","))'=$p(CurrMove(j,"C"),",",2,3) k @List1@(i) q ...f k=1:1:Len s m(k,$e(@List1@(i),k))=$g(m(k,$e(@List1@(i),k)))+1 .k @List2 .s i="" f s i=$o(@List1@(i)) q:i="" d ..s n=0 ..f k=1:1:Len s n=n+m(k,$e(@List1@(i),k)) ..s @List2@(n,i)="" .s m=$o(@List2@(""),-1) .s i=$o(@List2@(m,"")) .s Move=@List@(i) .k @List1@(i) s ret=$$CheckMove(HNumber,Move) s CurrMove(CurrMove,"C")=Move_","_ret w "My move: "_Move," - ",$p(ret,",")," bulls ", $p(ret,",",2)," cows",! i $i(CurrMove) i Move=HNumber q 2 q 0 HMove() ; n Move,ret s Move=$$EntNum() i Move=CNumber q 1 s ret=$$CheckMove(CNumber,Move) w $p(ret,",")," bulls ", $p(ret,",",2)," cows",! s CurrMove(CurrMove,"H")=Move_","_ret q 0 CheckMove(N1,N2) ; n bulls,cows,i,j s (bulls,cows)=0 f i=1:1:Len f j=1:1:Len d .q:$e(N1,i)'=$e(N2,j) .i i=j s bulls=bulls+1 q .s cows=cows+1 q bulls_","_cows InitList ; n i,s,j,n s s="" f i=1:1:Len s s=s_"f j("_i_")=0:1:9 " s s=s_" s n=" f i=1:1:Len s s=s_"j("_i_")_" s s=$e(s,1,$l(s)-1)_" i $$CheckNum(n) s @List@($i(@List))=n" x s q RandomList ; n i,n1,n2,n f i=1:1:@List*3 s n1=$r(@List)+1,n2=$r(@List)+1,n=@List@(n1),@List@(n1)=@List@(n2),@List@(n2)=n q CheckNum(Number) ; n i,j,Ret s Ret=1 f i=1:1:Len-1 f j=i+1:1:Len i ($e(Number,i)=$e(Number,j))!($e(Number,j)'?1n)!($e(Number,i)'?1n) s Ret=0 q q Ret YesNo(Prompt) ; n r,ret s ret="" f d q:ret'="" .w $g(Prompt)," (Y/N)" r r#1 w ! .i (r="y")!(r="Y") s ret=1 q .i (r="n")!(r="N") s ret=0 q .w " Type ""Y"" or ""N""",! q ret EntNum(Prompt) ; n r,ret i $g(Prompt)="" s Prompt="Your move: " s ret="" f d q:ret'="" .w Prompt r r .i $l(r)'=Len w !,"Number must have "_Len_" digit",! q .i '$$CheckNum(r) w !,"Wrong number!",! q .s ret=r w ! q ret p(n) q $j("",n-4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2011, 08:28 |
|
||
|
Баловство. Быки-коровы
|
|||
|---|---|---|---|
|
#18+
MaWr , а где БД с набором слов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2011, 09:03 |
|
||
|
Баловство. Быки-коровы
|
|||
|---|---|---|---|
|
#18+
krvsa MaWr , а где БД с набором слов? Дык это цифирки угадывать ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2011, 11:33 |
|
||
|
|

start [/forum/topic.php?fid=39&fpage=41&tid=1557720]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 372ms |

| 0 / 0 |
