前回の記事はこちら
7、8回目のチャット
今回は整合性チェックのロジックを実装していきます。
送信したチャットは以下の通りです。
今まで、ランダムに嘘つきや犯人を設定していましたが、そのロジックを変更しようと思います。
まず3人の発言をすべてランダムに生成する。
全員のステータスや犯人の組み合わせを全探索し、2通り以上の正解があったり、全ての場合で正解がない場合、もう一度発言を生成し直す。
発言が成立する登場人物のステータスや犯人を、実際のステータスに反映する。
正直者・嘘つきの組み合わせは2^3で8通り。
犯人は3人のうち1人なので3通り。
すべての組み合わせは8*3で24通り。
ランダム生成した発言をこの24通りの組み合わせすべてで矛盾がないか確認する。
24通りのうち1通りのみが矛盾がなく、残り23通りで矛盾があった場合、正しい問題として判定する。
矛盾のチェック方法。
24通りの全パターンに対し、以下の操作を行う。
・わかりやすいように嘘つきの発言の判定ロジックを反転する(not OO -> OO, OO -> not OO)
・6つの発言がすべて正しいかチェックする。(1つでも間違った発言があった場合、このパターンは不正解。)
・24パターンのうち1つのみが正解パターンの場合、正しい問題。
8回目のチャットでは、細かいデザインの修正や、発言生成ロジックの変更、デバッグ情報の非表示を行いました。
送信したチャットは以下の通りです。
CSSを直してください。
「クラシック」を押したあと、「嘘つきパズル」のボタンのマウスホバーのエフェクトがありません。
また、「この内容で回答する」ボタンも同様にマウスホバーのエフェクトがありません。
他のボタンとスタイルを統一してください。
次に、生成する発言について、1人の人物が複数の人物を犯人だと発言した場合、確実に嘘つきであることがわかってしまいます。
そのため、生成する発言は、「嘘つき・正直者」に関する発言1つと「犯人」に関する発言1つを生成するように変更してください。
また、これで完成にするのでデバッグ情報の表示を終えてください。
これで簡単な嘘つきパズルが毎回ランダムに生成されるロジックが完成しました。
ここまでで完成したページはこちら
すべてAIに作成してもらった嘘つきパズルが遊べます。
今はまだ一つしか遊べませんが、少しずつ追加していく予定です。
他の論理クイズの記事もCheck!


