情報知能工学演習VI: Prolog 課題問題(第1回)

Last modified: Thu Oct 29 19:20:33 1998 JST

課題問題(第1回)

麻雀の清一色(チンイーソウ)の和り(あがり)になっているかどうか 判定する問題です.

入力されるデータは,1〜9の数を要素とする長さ14のリストです.

データの例:
[1,2,3,4,5,6,7,8,9,1,2,3,4,5]
[1,1,1,2,3,4,5,6,7,8,9,9,9,1]

和りかどうかは,以下の定義に従ってください. 本当の麻雀では,同じ数は5回以上現れませんし, トイツが7つでも和りになりますが, ここではそれらは考慮しません.

課題問題は以下の通りです. ヒントが欲しい場合は,どんどん 田村 (tamura@seg.kobe-u.ac.jp) まで質問してください.
問題1
1〜9の数を要素とする長さ14のリスト Ns が与えられたとき, そのリストが和りかどうか判定する述語 agari(Ns) を定義しなさい.
例:
?- agari([1,1,1,2,3,4,5,6,7,8,9,9,9,9]).
yes
問題2
1〜9の数を要素とする長さ13のリスト Ns が与えられたとき, そのリストのすべての待ちをリストにして答える述語 tenpai(Ns, Ms) を定義しなさい.
例:
?- tenpai([1,1,1,2,3,4,5,6,7,8,9,9,9], Ms).
Ms = [1,2,3,4,5,6,7,8,9] ?
?- tenpai([3,3,1,4,5,2,7,3,4,4,4,5,6], Ms).
Ms = [2,3,5,6,8] ?
ヒント:
注意!
残留プロセスには注意してください. winterm 中で top と入れると,CPUを多く使っているプロセスの 一覧が表示されます. 無駄なプロセスは,すぐに kill してください.

課題(第1回目)の提出

上記の課題問題の解答プログラムを 説明つきで単一のファイルとして作成し, 以下のコマンドで提出しなさい (説明はプログラム中にコメントの形で記述すること). なお,解答プログラムは必ずEUC文字コードで作成すること (でないと実行ログファイルが文字化けする). Mule中で,EUC文字コードを選択するには, 「C-x C-k f」として *euc-japan* と入力すれば良い.
提出期限は10月30日(金). 期限を過ぎたものは不合格とする. 同じプログラムを提出した者は全員不合格とするので注意すること (変数名だけが異なるプログラムなども同一とみなす). また,CPU時間が短いものほど良い点をつける.

     % rlogin jube
     % cd 解答プログラムのあるディレクトリ
     % submit1 解答プログラムのファイル名
提出コマンド submit1 の詳しい説明は,以下のようにすれば表示されるので, 必ず見ておくこと.

     % submit1
また,提出期限以前なら何度でも提出できるので, 早い機会に一度提出の練習をしておくこと. 最後に提出したものだけが有効になる. たとえば次のようなファイル agari.pl を提出すると

    agari(_).           % なんでも和り
    tenpai(_, []).      % 待ちなし
次のように表示される.

    Prologファイル agari.pl を実行を開始します(プロセスIDは22911).
    実行結果は実行ログファイル kadai1.log に書き込まれます.
    最長実行時間は600秒までです.
    Prologの実行を終了しました.
    総合結果: △ テストデータに対して,結果が間違っている場合があります.
    実行ログファイル kadai1.log をカレントディレクトリに作成しました.
    実行ログファイル kadai1.log を提出しました.
    実行ログファイルは,演習終了まで消去しないでください.
うまく提出できない場合は,田村まで連絡してください.
Naoyuki Tamura