このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294061094/636
#  1] 授業単元:プログラミング 
#  [2] 問題文(含コード&リンク):http://ime.nu/ywata-lab.yz.yamagata-u.ac.jp/PDF/pro2-1-19.pdf 
#  
#  課題9:
#  コンピュータ(com)とあなた(you)がジャンケンをするプ
#  ログラムにおいて,以下の2つユーザ関数に作成して,
#  実行できるようにせよ
#  1.コンピュータ(com)の「手」を出力する
#  int Rival(void)
#  2.勝敗を判定し,出力する
#  void Judge(int you, int com)

私とコンピュータがジャンケンをする(_勝負) :-
        私とコンピュータが手を出し合う(_私の拳,_コンピュータの拳),
        '勝敗を判定し,出力する'(_私の拳,_コンピュータ拳,_勝負),
        勝負が決する(_勝負).
私とコンピュータがジャンケンをする(_勝負) :- 私とコンピュータがジャンケンをする(_勝負).

私とコンピュータが手を出し合う(_私の拳,_コンピュータの拳) :-
        私の「手」を出力する(_私の拳),
        'コンピュータ(com)の「手」を出力する'(_コンピュータの拳).

私の「手」を出力する(_私の拳) :-
        write('サイショはグー ジャンケンポン : '),
        行入力(_私の拳),
        writef('私: %w 対 ',[_私の拳]).

'コンピュータ(com)の「手」を出力する'(_コンピュータの拳) :-
        乱数によってコンピュータの「手」を決める(_コンピュータの拳),
        「手」を出力する(_コンピュータの拳).

'勝敗を判定し,出力する'(_私の拳,_コンピュータ拳,_勝負) :-
        勝敗を判定し(_拳,_拳,_勝負),
        出力する(_勝負).

勝敗を判定し(_拳,_拳,あいこ) :- !.
勝敗を判定し(グー,チョキ,私の勝ち) :- !.
勝敗を判定し(チョキ,パー,私の勝ち) :- !.
勝敗を判定し(パー,グー,私の勝ち) :- !.
勝敗を判定し(_,_,コンピュータの勝ち).

出力する(_勝負) :-
        writef('%t です\n',[_勝負]).

乱数によってコンピュータの「手」を決める(_拳) :-
        Nth1 is random(3) + 1,
        nth1(Nth1,[グー,チョキ,パー],_拳).

「手」を出力する(_コンピュータの拳) :-
        writef('コンピュータ: %w\n',[_コンピュータの拳]).

行入力(_行) :-
        read_line_to_codes(current_input,Codes),
        atom_codes(_行,Codes).

勝負が決する(_勝負) :-
        \+(_勝負 = あいこ).