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