Just $ A sandbox

プログラミングと計算機科学とかわいさ

ワンナイト人狼の基本戦略

ワンナイト人狼とは

ワンナイト人狼は一夜で決着が着く人狼(ジャンルとしては多人数推理ゲーム)。

ワンナイト人狼のルール

ゲームは3~5人向けだが、今回は4人でプレイするとして解説をする。
初めに6枚のカードを用意する。
内訳は「人狼2枚、村人2枚、占い師1枚、怪盗1枚」

1. 6枚のカードをよく混ぜ、一人1枚ずつカードを配る。余った2枚は中央に伏せる。
2. 各自、自分のカード(役職)を確認後、全員が顔を伏せる。
3. 占い師のターン: 占い師は以下のいずれかの行動を起こす。 A)自分以外の3人のカードのうち1枚のカードを確認する B)中央の2枚のカードを確認する
4. 人狼のターン: 人狼は顔を上げ、仲間を確認する。
5. 怪盗のターン: 怪盗は自分以外の3枚のカードのうち1枚と自分のカードを交換する。交換後、交換したカードが何の役職であるかを確認する。
6. 全員が顔を上げ、規定の時間話し合いを行う。
7. 1人ずつ、処刑したい人を選び全員で投票を行う。投票は自分には出来ない。
8. 投票の結果、最多票で2票以上を獲得した人(複数人いれば全員)を処刑し、勝敗の判定を行う。

勝利条件:

  • (村人・占い師・怪盗) 4人の中に人狼が入れば、人狼を1人でも処刑すれば勝利。投票終了時に自分が生きている必要はない。人狼がいなければ全員の投票をばらけさせることで全員勝利となる。
  • (人狼) 人狼が1人も処刑されなければ勝利。

基本戦略

基本的には、「村人っぽい」発言をしていると村人から信頼される可能性が高くなる。
ワンナイト人狼ではほぼ村人の投票で勝敗が決するので、村人は正しい人にいれること、非村人は村人から信頼を得ることが非常に重要です。

人狼の場合

二人人狼の場合

ABCDの4人の村で、AとBが二人人狼とする。このときとれる戦略としては以下の2つが簡単だが、圧倒的に(1)の方が勝ちやすい。

(1) Aが占い師を騙り、Bが村人を騙る。C=真占がいる場合は、Bが上手くDを誘導し、A→C、C→A、B→A、D→Cの投票にさせてBが裏切ればよい。Aの占いの内容は「中央の2枚を見て1枚人狼だった」が無難だが、「Bが村人」でもよい(ただしこれはグルを疑われやすい)。適当な人への村人認定は、認定する相手が占い師だと詰むので注意。
(2) AとBは平和村になるように騙りをする。占い師や怪盗がでなければAとBで騙る。ただし、白怪盗や占い師が潜伏している場合は平和村を扇動すると非常に怪しまれるので、その場合は(1)のパターンに持ち込む必要が出るかも。

一人人狼の場合

一人人狼の場合は真占いに占われたりするとあっさり負ける可能性が高いので一人で勝つのはかなり難しい。

(1) 村人のフリに徹する。占い師に占われたら(2)の場合に行くしかない。
(2) 自分が一人人狼であることをバラし、怪盗が自分とすり替えたと主張する。上手く行けば処刑を免れることもあるが、両吊りにされて終わる可能性が高い。

占い師の場合

基本的には1でよいが、対抗占いも怪盗も出ない場合は2でも可。

(1) 本当のことを言う。
(2) 占った結果を偽って報告する(中央の2枚を見て、誰かを人狼認定する等)。この場合も疑われれば自分と誰かの両吊りを提案すれば良い。占い師も村人同様情報がないと詰むので、人狼側から情報が出やすくなるように誘導することは有効。

村人の場合

ワンナイト人狼では村人の騙りがOKとなっているので、これを有効に使う。
村人にとっては、「何も情報がない」ことが最も危険な状況である。

(1) 普通に推理する。情報が出ない(しばらく待っても怪盗・占い師が出ない)場合は(2)も有効。
(2) 占い師を騙り、人狼に関する情報を出す(人狼はn枚ある、この人が人狼etc)。対抗が出れば素直に本当のことを言って、怪しい人物と両吊りにしてもらう。

怪盗の場合

白怪盗の場合

白怪盗というのは、村人サイドのカードと入れ替えた怪盗の場合。
この場合は戦略などなく、正直に情報を出すのが一番。

黒怪盗の場合

(1) 村人のフリをする。これでまず村人から疑われることはない。人狼が2人いることが確定すれば、(3)に行くとよい。
(2) 白怪盗を騙り、誰かを白認定する。対抗がいなさそうであれば占い師を騙ることも有効。
(3) 黒怪盗であることをバラすが、このとき誰と入れ替えて人狼であったかは言わない。人狼は黒怪盗を処刑できないので、二人人狼であればあなたが負けることはない。

難易度ランキング

超個人的な経験に基づく勝利難易度ランキング:

(難) 一人人狼>黒怪盗>>>村人>占い師≒白怪盗>二人人狼 (易)

どうでもいい話

上のことは大体個人的な経験に基づく話なので、必ずしもこれが正しいわけではありません。
普通に遊んでいると上の要素が複数絡んでくるので推理はもっと難しいです。

ただし、ワンナイト人狼は上のような基本戦略を抑えている人とそうでない人で実力差が激しいゲームなので、プレイの前には理解しておいた方がいいと思います。

個人的な意見では黒怪盗COして勝つのが一番楽しいです。

Linuxで音声読み上げ

ゆっくりしていってね

棒読みちゃん

# ~/.wine32に32bit環境のprefixを作っておく
~$ WINEPREFIX=~/.wine32 WINEARCH=win32 wine BouyomiChan.exe

SofTalk

AquesTalk

Open JTalk

Open JTalk

#!/bin/sh
VOICE=/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice

echo $1 | open_jtalk \
-m ${2:-$VOICE} \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $3 \
-ot $4

を保存して実行するといける

  • -owは出力するwavファイル名, -otはログ

MMDAgent メイちゃん

  • http://www.mmdagent.jp/の"Sample Script"のbinary packageをダウンロードし、Voiceの中にあるhtsvoiceファイルを使う
  • open_jtalk -m /path/to/mei_hoge.htsvoiceでOK
  • 割とハキハキしゃべってくれる

他の声

Grothendieck群とBurnside環の定義

局所有限トポス上の離散数学の構築を目指して

という論文で、Burnside環という環を扱っていた.定義は「局所有限トポスの同型類から得られるGrothendieck ring」らしく, これではよく分からなかったので調べた.

Grothendieck

Grothendieck群は可換モノイドから作るAbel群のことで, しかもこの構成はfree functor \(\mathbf{CMon} \to \mathbf{Ab}\)を与えるらしい.\(\mathbb{N}\)から\(\mathbb{Z}\)を作るのと同じ方法で, 可換モノイド\(A\)に対し\(A \times A \)に同値関係を\((a,b) \sim (a',b') \iff \exists k : a + b' + k = a' + b + k\)で定めるとこれは群になる.この群をGrothendieck群という.

ToposとGrothendieck

Toposはlimit, colimitを持つので\(0,1,+,\times\)があって欲しい性質は大体満たしている. (可換半環になっている)ここから環を作るには和に関して可換モノイドを群に拡張してやればよく, 構成は大体上と同じ方法でできる.

Topos \(\mathcal{E}\)に対し, その同型類\(\mathcal{E}/\cong\)を考える. 上と同じ方法によって, \(\mathcal{E}/\cong \times \mathcal{E}/\cong\) (Toposの同型類の2つ組全体)は群になる. \(\mathcal{E}\)にもともと備わっているproductと合わせてこれは環になる.今の場合こうやって得た環をBurnside環と言うらしい.

気になったこととして和と積の分配則ってToposだと成り立つんだっけ?とか思った.よく考えれば(coproductをもつ)CCCでは直積はexponentialの左随伴なのでcolimitを保つのですぐ言える.初め\(A \times (B + C) \cong A \times B + A \times C \)の間の同型射を具体的に構成しようとしたら右から左が作れなくてつらかった.調べたら, 直接的な構成もできるみたいだけどexponentialの方にもっていったりしないといけないらしく大変そうだった.cf. Cartesian closed categories are distributive


Grothendieck群は加群の完全列を使っても定義できるらしい.つまり, 加群の同型類全体を考えて, ここに関係式を\(0 \to A \to B \to C \to 0\)が完全 iff \([A] - [B] + [C] = 0\)で定める. するとこれもAbel群になるというもの. 大体同じことがAbel圏とか三角圏でもできる.

WikipediaによるとGrothendieck群はK-theoryで重要らしい.そ, そうなのかー.

参考文献