【一人遊びポーカー点数評価プログラム】

			by Eiji Sugino (sugino@jaist.ac.jp) at Jul.17.1997

・機能

	一人遊びポーカーの解(5×5枚の札の並び)に対して、
	総合点数を評価する。
	
	テスト用に通常のポーカー機能も含む。

・ファイル

	このパッケージには、以下のファイルが含まれる

	README.j	本ファイル
	README.e 	英語版 README
	Makefile	makeファイル
	main.kl1	ドライバー
	dealer.kl1	カードを乱数によって生成する
	eval.kl1	点数評価プログラム

・インストール

	% make 

	によって ファイル pk が生成される。

・使用方法

	% ./pk [Seed]

	によってプログラムが起動される。 
	Seedは初期乱数のタネであり、省略可能である。

	起動されるとプロンプト '>' に対して、コマンド入力を受け付ける。
	なお、コマンド入力 は'.' で終らねばならない。
	
	コマンドとして次が用意されている。

	quit  or  exit   : プログラムを終了する。
	open(N)		 : タネをNとした乱数で、新しいカードを用意する。
	5		 : カードを5枚配る(通常のポーカーとして実行)。
	25		 : カードを25枚配る。
	[card(..),...]   : 明示的に任意のカードを設定する。
				様式は課題にある通り。
	show		 : 現在保持しているカードを再表示する。
	ch(List)	 : カードを変える。変えるカードは、Listで指定する。
			    Listは順に、現在の手札の先頭を0,次を1,... で指定
			    する。
・表示

	1. 通常の5枚ポーカーの表示例

		C6 C2 C3 S4 H5   ... 10787 / straight(20)

		手札と得点、役を表示する。
		手札の組は、spades,hearts,diamonds,clubs をそれぞれS,H,D,Cで、
		また位は、10,jack,queen,king,ace をそれぞれ T,J,Q,K,A で表す。
		役の()中の数字は、加点の計算に用いている内部の値である。

	2.  25枚一人遊びの表示例

		104  0  0  118  112  				*1
		ST CA C6 H9 HA  ... 128				*2
		S4 SJ H7 DT D5  ... 0				
		D2 DQ SQ S9 H6  ... 124				
		S2 S8 H8 S7 DK  ... 116				
		C8 D7 H3 C3 S6  ... 106				
		  21546 / 116					*3
		 --------------------------- TOTAL=22470	*4

		(*1) 縦列の並びに対する点数を表示する。
		(*2) 各行を表示した後ろに、その行に対する点数を表示する。
		(*3) 左斜め対角線の点数 / 右斜め対角線の点数を表示する。
		(*4) 総得点を表示する。

・使用例

	% ./pk						プログラム起動
	> 5.						5枚配る
	CK C2 C3 S4 H5   ... 0 / no_pair
	TIME=0
	> ch([0]).					1枚(CK)を交換
	D9 C2 C3 S4 H5   ... 0 / no_pair
	TIME=0
	.......
	> ch([0]).					
	C6 C2 C3 S4 H5   ... 10787 / straight(20)
	TIME=0
	=-=-=-=-=-=-=-=-=-
	> open(17).					別のパックを開く
	TIME=0
	> 5.						5枚配る
	SQ D8 SA HA HT   ... 128 / one_pair(14)
	TIME=0
	> ch([0,1,4]).					3枚(SQ,D8,HT)を交換
	D2 D6 SA HA S9   ... 128 / one_pair(14)
	TIME=0
	> ch([0,1,4]).
	H5 DT SA HA D5   ... 926 / two_pairs(5,14)
	TIME=0
	> ch([1]).
	H5 H4 SA HA D5   ... 926 / two_pairs(5,14)
	TIME=0
	........
	> ch([1]).
	H5 C5 SA HA D5   ... 29376 / full_house(5,14)
	TIME=0
	=-=-=-=-=-=-=-=-=-

	> open(7).					別のパックを開く
	TIME=0
	> 25.						25枚配る
	104  0  0  0  112  
	HT CA S5 D8 HA  ... 128
	S4 SJ H7 DT D5  ... 0
	D2 CT SQ S9 H6  ... 0
	S2 S8 H8 S7 DK  ... 116
	C8 CQ DJ C3 S6  ... 0
	  0 / 116
	 --------------------------- TOTAL=576
	TIME=0
	>  ch([0,2,3]). 				3枚(HT,S5,D8)交換
	104  0  0  118  112  
	ST CA C6 H9 HA  ... 128
	S4 SJ H7 DT D5  ... 0
	D2 CT SQ S9 H6  ... 0
	S2 S8 H8 S7 DK  ... 116
	C8 CQ DJ C3 S6  ... 0
	  21546 / 116
	 --------------------------- TOTAL=22240
	TIME=0
	> ch([11,21]).					2枚(CT,CQ)交換
	104  0  0  118  112  
	ST CA C6 H9 HA  ... 128
	S4 SJ H7 DT D5  ... 0
	D2 DQ SQ S9 H6  ... 124
	S2 S8 H8 S7 DK  ... 116
	C8 H4 DJ C3 S6  ... 0
	  21546 / 116
	 --------------------------- TOTAL=22364
	TIME=16