このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1305867431/276
#  [1] 授業単元:繰り返し処理  
#  [2] 問題文: 
#  五者択一の自作の問題文章を表示させ、整数入力を受けつけ、正解・不正解の判定を行う。  
#  ただし、正解が入力されるまで、「不正解」と表示した後、同じ問題を正解となるまで繰り返し表示し、回答を入力させる。  
#  問題が2問である上記のようなプログラムを作成しなさい。  
# 
# 

五者択一の自作の問題文章を表示させ、整数入力を受けつけ、正解・不正解の判定を行う :-
        五者択一の自作問題を表示([]),
        整数入力を受けつけ([],_整数),
        五者択一の自作の問題文章を表示させ、整数入力を受けつけ、正解・不正解の判定を行う(_整数,[]).

五者択一の自作の問題文章を表示させ、整数入力を受けつけ、正解・不正解の判定を行う(_整数,L) :-
        正解・不正解の判定を行う(_整数,正解),!.
五者択一の自作の問題文章を表示させ、整数入力を受けつけ、正解・不正解の判定を行う(_整数,L) :-
        五者択一の自作問題を表示([_整数|L]),
        整数入力を受けつけ([_整数|L],_整数2),
        五者択一の自作の問題文章を表示させ、整数入力を受けつけ、正解・不正解の判定を行う(_整数2,[_整数|L]).

自作問題(3,'キシュウローレルは桜花賞馬にはなれなかった').
自作問題(5,'ニホンピロエースは1966年の皐月賞馬である').
自作問題(1,'タニノハローモアは阪神三歳ステークスで一番人気だった').
自作問題(2,'ダコタはNHK杯の勝ち馬だった').
自作問題(4,'ヤマノオーはダービーでは同着の2着だった').

五者択一の自作問題を表示(L) :-
        write('以下の文で正しくないものの文番号を入力しなさい\n'),
        append(_,[_番号|R],[1,2,3,4,5]),
        \+(append(_,[_番号|_],L)),
        自作問題を表示(_番号),
        R = [],!.

自作問題を表示(_番号) :-
        自作問題(_番号,_問題),
        writef('%t .. %t\n',[_番号,_問題]),!.

整数入力を受けつけ(L,_整数) :-
        write('整数 : '),
        get_line(Line),
        整数入力を受けつけ診断(Line,L,_整数),!.
整数入力を受けつけ(L,_整数) :- 整数入力を受けつけ(L,_整数).

整数入力を受けつけ診断(Line,L,_整数) :-
        atom_to_term(Line,_整数,_),
        integer(_整数),
        \+(append(_,[_整数|_],L)),
        _整数 >= 1,
        _整数 =< 5,!.
整数入力を受けつけ診断(Line,L,_整数) :-
        writef('入力された %t からは1~5の整数が得られません。再入力をお願いします。',[Line]),
        fail.

正解・不正解の判定を行う(_解答,正解) :-
        正解(_解答),!.
正解・不正解の判定を行う(_解答,不正解).

正解(2).