12A猫で学んだこと-Memoir-

...What are you learning now?

Werewolves’ Puzzle Auto-Generator 人狼パズル自動生成[一応完成版]

はじめに

Happy Halloween!
こんにちは、StudentSです。 先月から作ってみた人狼パズル自動生成の仕組みが一応出来ました。 大体、やってみたいことはできたかなぁと思っています。 ソースコードGithub の方にアップロードしています。

このエントリのまとめ

使い方

Githubに書いている通りですが、

python puzzle_generator.py -lang jp

で問題が生成されます。

プレイヤーの数を指定したいときは、-v, -w, -lのオプションで指定できます。

日本語で出力したいときは、 -lang jpを付記します。

反復アルゴリズムで問題を生成しています。 一定回数の反復で問題が生成できなかったときは、 例外が発生するのでご容赦ください。(RuntimeException)

詳しいことは、

python puzzle_generator.py -h 

でみることが出来ます。

主な改善点

  • 狂人の役職を追加
  • 出力される問題の傾向の変更が可能になった

ルール

  • 人狼のプレイヤーを探し出すことが目的
  • プレイヤーは他のプレイヤーについて、狼かどうかを主張する。
  • 村陣営は決して嘘をつかない。
  • 狼と狂人は、嘘をつくかもしれない。

生成される問題と答えの例

いくつか問題を掲載します。

問題1 (初級編)

  • 内訳:村陣営/狼/狂=3/1/1, PL:A-E

各PLの主張

  • Aの主張:B○,D○,E○
  • Bの主張:E●
  • Cの主張:E●
  • Dの主張:E○

解答

  • 狼:C

問題2 (中級編)

  • 内訳:村陣営/狼/狂=4/1/2, PL:A-G

    各PLの主張

  • Aの主張:B○,C●,D○,E○,G○
  • Bの主張:C○,E○,F○
  • Cの主張:A○,F○,G○
  • Dの主張:B●,E○,F○
  • Eの主張:B○,C●,D○
  • Fの主張:C○,E○
  • Gの主張:D○,F○

    解答

  • 狼:B

問題3 (上級編)

  • 内訳:村陣営/狼/狂=5/1/3, PL:A-I

    各PLの主張

  • Aの主張:C○,E○,F●,G○,H○
  • Bの主張:A○,E○,G○,H○
  • Cの主張:B○,D○,G●,H○
  • Dの主張:A○,F●,G○,H○
  • Eの主張:A○,B○,F○
  • Fの主張:B○,C●
  • Gの主張:C○,I○
  • Hの主張:E○,I○
  • Iの主張:G●

    解答

  • 狼:F

感想

  • 実際の村では大切な結果を出す時系列の情報が抜け落ちている。
  • 自分で解いてみると、想像より問題が難しかった。
  • 自分自身の「作れた」という経験は大切にしたい...