2010年1月11日月曜日

Motzart/Logic puzzle

だいぶ前にインストールした Mozart という Oz 言語実装を、初めて使ってみた。

Wikipedia でロジックパズルを引くと、こんな簡単な例題が載っている(2010/01/11現在)。これを Mozart で書いてみる。
3人のそれぞれの発言から、それぞれの今日の昼食を当ててください。ただし、カレーライス、ラーメン、そばのうちから3人とも別々のものを食べました。
トンキチ:…。
チンペイ:あいつみたいにそばだったら僕は足りないな。
カンタ:僕はカレーライスもそばも嫌いなんだ。
答え
トンキチ:そば
チンペイ:カレーライス
カンタ:ラーメン

下のコードを Oz Programming Interface に入力して、C-M-x で読み込ませると、
local Kan Chin Ton
Lanch = [curry ramen soba]
NotIn = fun {$ Ex}
{Filter Lanch fun {$ X} {Not {Member X Ex}} end}
end
in
thread (Ton |_)= {NotIn [Kan Chin]} end
thread (Chin|_)= {NotIn [Kan soba]} end
thread (Kan |_)= {NotIn [curry soba]} end
{Browse [tonkichi#Ton chinpei#Chin kanta#Kan]}
end
Oz ブラウザに
[tonkichi#soba chinpei#curry tanta#ramen] 
と表示される。

うーん、まだよくわからんが Prolog とはだいぶ違う。

====
以下を参考にした

0 件のコメント:

コメントを投稿