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