傘 | 靴 | 紙 | 糸 | 赤 | 青 | 白 | 黒 | |
明 | ||||||||
勇 | ||||||||
正 | ||||||||
洋 | ||||||||
赤 | ||||||||
青 | ||||||||
白 | ||||||||
黒 |
s SATISFIABLE a akira 1 a isamu 2 a tadashi 3 a hiroshi 4 a kasa 1 a kutsu 3 a kami 4 a ito 2 a red 2 a blue 4 a white 1 a black 3 a
やっぱり,変数名を日本語で書きたいですね.
次のバージョンでは,以下のように日本語の変数名を使えるようにしたいと思います.
(domain d 1 4)
(int 明 1)
(int 勇 2)
(int 正 3)
(int 洋 4)
(int 傘 d)
(int 靴 d)
(int 紙 d)
(int 糸 d)
(alldifferent 傘 靴 紙 糸)
(int 赤 d)
(int 青 d)
(int 白 d)
(int 黒 d)
(alldifferent 赤 青 白 黒)
(predicate (買った x y) (= x y))
(買った 明 白)
(not (買った 明 糸))
(int 誰か d)
(買った 誰か 紙)
(買った 誰か 青)
(!= 誰か 勇)
(買った 正 靴)
(not (買った 正 赤))
なお,推理パズルについては, さすがに自動的にCSPを生成するプログラムは書けません...