yohei #5196(2008/01/05 15:19 GMT) [ Prolog ] Rating2/2=1.00
permutationとパターンマッチで簡単に.効率は犠牲に...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
pokerHand([X,X,X,X,X], R, 'Royal flush') :- permutation(R, ['T','J','Q','K','A']). pokerHand([X,X,X,X,X], R, 'Straight flush') :- sub_atom('A23456789TJQK', _, 5, _, A), atom_chars(A, P), permutation(R, P). pokerHand([X,X,X,X,X], _, 'Flush'). pokerHand(_, R, 'Straight') :- sub_atom('A23456789TJQKA', _, 5, _, A), atom_chars(A, P), permutation(R, P). pokerHand(_, R, 'Four of a kind' ) :- permutation(R, [X,X,X,X,_]). pokerHand(_, R, 'Full house' ) :- permutation(R, [X,X,X,Y,Y]). pokerHand(_, R, 'Three of a kind') :- permutation(R, [X,X,X,_,_]). pokerHand(_, R, 'Two pair' ) :- permutation(R, [X,X,Y,Y,_]). pokerHand(_, R, 'One pair' ) :- permutation(R, [X,X,_,_,_]). pokerHand(_, _, 'No pair' ). poker(Card) :- atom_chars(Card, [S1,R1,S2,R2,S3,R3,S4,R4,S5,R5]), pokerHand([S1,S2,S3,S4,S5], [R1,R2,R3,R4,R5], H), !, writeln(H).
Rating2/2=1.00-0+
1 reply [ reply ]
yohei
#5196()
[
Prolog
]
Rating2/2=1.00
permutationとパターンマッチで簡単に.効率は犠牲に...
pokerHand([X,X,X,X,X], R, 'Royal flush') :- permutation(R, ['T','J','Q','K','A']). pokerHand([X,X,X,X,X], R, 'Straight flush') :- sub_atom('A23456789TJQK', _, 5, _, A), atom_chars(A, P), permutation(R, P). pokerHand([X,X,X,X,X], _, 'Flush'). pokerHand(_, R, 'Straight') :- sub_atom('A23456789TJQKA', _, 5, _, A), atom_chars(A, P), permutation(R, P). pokerHand(_, R, 'Four of a kind' ) :- permutation(R, [X,X,X,X,_]). pokerHand(_, R, 'Full house' ) :- permutation(R, [X,X,X,Y,Y]). pokerHand(_, R, 'Three of a kind') :- permutation(R, [X,X,X,_,_]). pokerHand(_, R, 'Two pair' ) :- permutation(R, [X,X,Y,Y,_]). pokerHand(_, R, 'One pair' ) :- permutation(R, [X,X,_,_,_]). pokerHand(_, _, 'No pair' ). poker(Card) :- atom_chars(Card, [S1,R1,S2,R2,S3,R3,S4,R4,S5,R5]), pokerHand([S1,S2,S3,S4,S5], [R1,R2,R3,R4,R5], H), !, writeln(H).Rating2/2=1.00-0+
1 reply [ reply ]