Penney's game: Difference between revisions
Content added Content deleted
(Added Prolog Implementation) |
|||
Line 2,314: | Line 2,314: | ||
Want play again? Y/N: n |
Want play again? Y/N: n |
||
</pre> |
|||
=={{Header|Prolog}}== |
|||
<lang prolog>play :- rand1(R), game(R). |
|||
game(h) :- |
|||
format('Your turn first!~n'), player_move(P), |
|||
response(P,C), format('I am choosing '), maplist(writec, C), nl, |
|||
rand3(R), maplist(writec,R), |
|||
roll(P, C, R). |
|||
game(t) :- |
|||
rand3(C), |
|||
format('I am choosing '), maplist(writec, C), nl, |
|||
player_move(P), |
|||
rand3(R), maplist(writec, R), |
|||
roll(P, C, R). |
|||
player_move([P1,P2,P3]) :- |
|||
read_line_to_codes(user_input,Codes), |
|||
maplist(char_code,[P1,P2,P3],Codes). |
|||
roll(P, _, P) :- format('~nYou Win!~n'), !. |
|||
roll(_, C, C) :- format('~nI Win!~n'), !. |
|||
roll(P, C, [_,A,B]) :- |
|||
rand1(R), |
|||
coin_s(R,S), |
|||
write(S), |
|||
roll(P,C,[A,B,R]). |
|||
response([A,B,_], [C,A,B]) :- opp(A,C). |
|||
writec(A) :- coin_s(A,A1), write(A1). |
|||
rand1(R) :- random(V), round(V,I), coin(I,R). |
|||
rand3([R1,R2,R3]) :- rand1(R1), rand1(R2), rand1(R3). |
|||
coin(0,h). coin(1,t). |
|||
coin_s(h, 'H'). coin_s(t, 'T'). |
|||
opp(h, t). opp(t, h).</lang> |
|||
Output: |
|||
<pre> |
|||
?- play. |
|||
I am choosing HTT |
|||
|: tth |
|||
HHTHHHHHHHHTHHHHTHTHTHTHTHHTT |
|||
I Win! |
|||
true. |
|||
?- play. |
|||
Your turn first! |
|||
|: hht |
|||
I am choosing THH |
|||
TTHTHH |
|||
I Win! |
|||
</pre> |
</pre> |
||