論理パズル: 臆病な嘘つき2

前回の論理パズル: 臆病な嘘つきAlloyで生成した後、僕が解いてちゃんと解けることを確認してから公開したのだけども、目下のところ問題なくパズル生成ができているようなのでまだ解いていない問題も公開します。どうもAlloyが間違う可能性よりも、僕が転記の際に失敗する可能性のほうが高そうだ。

全般

登場人物は嘘つきか正直かのどちらかである。そして「Xは嘘つきだ」や「Xは臆病だ」と発言する。発言者が正直なら、発言はすべて正しい。臆病な嘘つきは嘘を一つだけつく。5人の中に嘘つきは3人、臆病者は3人いる。

Q1

「嘘つき」が3人でループになる問題

E: Bは嘘つき
B: いやCが嘘つき
C: いやいやEが嘘つき、あとDも
E: Cは臆病だからなぁ
D: 嘘つきはAだよ
A: んー、それは否定しないけどDとEは臆病だよね
D: 臆病なのはBだよ
B: いやいや、Aだよ。

Q2

「嘘つき」が4人でループになる問題

C: Bが嘘つき
B: Dが嘘つき
D: Eが嘘つき
E: Cが嘘つき
A: ……Dが嘘つき
D: Aは臆病だからなぁ
A: 臆病なのはEだよ
E: いやBだね
B: いやいや、Eだよ。
C: んー、Dが臆病だと思うけどな。

Q3

嘘つきパスが一度別れて合流する問題

A: 嘘つきはE
E: いやCが嘘つき。あとBも。
C: うーん、Dが嘘つきだよ
B: それには同意する。Dが嘘つきだね。
D: AとBは臆病だ
B: 臆病なのはEだよ
C: うん、同意する。臆病なのはEだよね。
A: いや、Cだよ。

余談

こういう問題を作るときに手書きで関係図を書いていたのだけども、よくよく考えたらそれ自体もAlloyに出力させたらいいじゃん?と思ってやってみた。Lの付いている矢印が「XがYを嘘つきだといった」、Cの付いている矢印が「XがYを臆病だといった」って意味ね。


これは人の対応付けが違うだけでQ1と同じだな。



これはQ3と同じか。



これは見慣れないな。嘘つき呼ばわりに3人のループが2つ出来ている。多分新種だな。Q4。



これも多分Q1と同じ。同じかどうかの判定も自動化したいなぁと思い始めた。人に名前をつけるのをやめたら対称性から勝手に同じ形のグラフが消えてくれたりするかなあ。



これ形が大きく違うけど実はQ1と同じか?



これはQ3だな。



むむ、これは見慣れない形だな。Cの本数が少ない?あれ5本あるな。あ、2本が双方向なのか。新種新種。Q5。



これ、Lが3人でループしていて、そのうちの1人に入る矢印とでる矢印がある、って点ではQ5と同じだけど、双方向のCがないから新種かな。Q6。