このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1200175247/550
#
# (1)曜日を表す英語と日本語との対応を表すハッシュwdayを定義しなさい
#
# p wday["sunday"] #=> "日曜日"
# p wday["monday"] #=> "月曜日"
# p wday["saturday"] #=> "土曜日"
#
# (2)ハッシュのメソッドを使って(1)のハッシュwdayのペアの数を数えなさい
#
# (3)eachメソッドと(1)のハッシュwdayを使って以下の文字列を出力させてくださ
い。
# 「sunday」は日曜日のことです。
# 「monday」は月曜日のことです。
# …
#
# (4)ハッシュには配列の%wのようなものがありません。そこで、空白とタブと改行
# (正規表現で定義するなら「/\s+/」)で区切られた文字列をハッシュに変換するメ
ソッド
# str2hashを定義してください。
#
# p str2hash("bule 青 white 白\nred赤");
# #=> {"bule"=>"青", "white"=>"白", "red"=>"赤"} 

% (1)
wday(sunday,日曜日). 
wday(monday,月曜日).
wday(saturday,土曜日). 

% (2)
wdayの節数(_節数) :-
        節数(wday(_,_),_節数).

節数(_節形式,_節数) :-
        findall(1,_節形式,L),
        length(L,_節数).

% (3)
'(3)' :-
        forall(wday(A,B),
               writef('「%t」は%tのことです。\n',[A,B])).

% (4)
str2hash(S,_述語名) :-
        split(S,['\n'],L),
        member(A,L),
        split(A,['\t',' '],L1),
        str2hash(L1).

str2hash([]).
str2hash([_述語名,_値|R]) :-
        P =.. [_述語名,_値],
        assertz(P),
        str2has(R).