next up previous
Next: ストレートフラッシュ検索 Up: 解説・アルゴリズム Previous: 解説・アルゴリズム

エンコード

入力のカード列のままでは扱いが面倒なので、カードを各々一つの整数で表 すようにする。整数化の方法は評価用のサンプルプログラムと同じにした。 得点計算用の述語を使い回すのが影の目的だったりもする。

% Evaluation program for Solitaire Poker
%			by Eiji Sugino (sugino@jaist.ac.jp) at	Jul.17.1997

encode_card(card(Rank,Suit),Encoded) :-
    rank_code(Rank,RankCode), 
    suit_code(Suit,SuitCode), 
    Encoded := (RankCode << 4) \/ SuitCode.

suit_code(spades,  R) :- R = 4.
suit_code(hearts,  R) :- R = 3.
suit_code(diamonds,R) :- R = 2.
suit_code(clubs,   R) :- R = 1.

rank_code(N,      R) :- integer(N), 1 < N, N < 11 | R = N.
rank_code(jack,   R) :- R = 11.
rank_code(queen,  R) :- R = 12.
rank_code(king,   R) :- R = 13.
rank_code(ace,    R) :- R = 14.