このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/853
#  [1] 授業単元:プログラミング基礎 
#  [2] 問題文(含コード&リンク):(列挙体) 
#  Sunday, Monday, Tuesday, Wednesday, Thursday, 
#  Friday, Saturday という曜日を表す列挙体 
#  enum Days を定義せよ.以下の実行例のように, 
#  曜日を入力すると,enum Days の列挙定数を利用して 
#  週末,平日,それ以外の場合にそれぞれメッセージを 
#  表示するプログラムを作成せよ. 
#  例 % ./q3-3 
#  曜日を入力して下さい 
#  (0:日1:月2:火3:水4:木5:金6:土):0 
#  やった!週末だ 
#   
#  曜日を入力して下さい 
#  (0:日1:月2:火3:水4:木5:金6:土):5 
#  今日も講義頑張ろう! 
#   
#  曜日を入力して下さい 
#  (0:日1:月2:火3:水4:木5:金6:土):7 
#  この日はないぞう... 
#   

曜日([日,月,火,水,木,金,土]).

'曜日を入力すると,曜日 の列挙定数を利用して 週末,平日,それ以外の場合にそれぞれメッセージを表示する' :-
        曜日を入力すると(_曜日),
        '曜日 の列挙定数を利用して 週末,平日,それ以外の場合にそれぞれメッセージを'(_曜日,_メッセージ),
        表示する'(_メッセージ),!.

曜日を入力すると(_曜日) :-
        write('曜日を入力してください [日,月,火,水,木,金,土] : '),
        get_line(_曜日),!.

'曜日 の列挙定数を利用して 週末,平日,それ以外の場合にそれぞれメッセージを'(_曜日,週末は一家揃って中央競馬) :- 
        曜日から曜日番号を得る(_曜日,_曜日番号),
        週末だ(_曜日番号),!.
'曜日 の列挙定数を利用して 週末,平日,それ以外の場合にそれぞれメッセージを'(_曜日,平日も一家揃って公営競馬) :-
        曜日から曜日番号を得る(_曜日,_曜日番号),
        平日だ(_曜日番号),!.
'曜日 の列挙定数を利用して 週末,平日,それ以外の場合にそれぞれメッセージを'(_曜日,_メッセージ) :-
        atomic_list_concat(['入力された ',_曜日,' は 日,月,火,水,木,金,土 のいずれでもありません],_メッセージ),!.

曜日から曜日番号を得る(_曜日,_曜日番号),
        曜日(_曜日ならび),
        nth0(_曜日番号,_曜日ならび,_曜日).

週末だ(_曜日番号) :-
        0 is _曜日番号 mod 6.

平日だ(_曜日番号) :-
        \+(0 is _曜日番号 mod 6).

表示する(_メッセージ) :-
        writef('%t\n',[_メッセージ]).