技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

ゾンビウイルスが蔓延したと仮定して何日で全滅するか

ゾンビウイルスが蔓延したと仮定して、どれくらいの期間で死滅するか考えてみる。
これは要するに生存者は何日立てこもれば生存できるのかという事である。

大前提として 「生物としての肉体的変質を伴わない前提」 としたい。
例えばバイオハザードの G ウイルスみたいに、「生物を遺伝子レベルで書き換えてデタラメに進化させてしまう」みたいな話になってくると、体の構造なんて予測もつかないので想定すらできない。

もう一つの前提は 生物としての代謝は変わらない という前提だ。
良くバイオの映画だと、感染したら速攻腐ったような肌色になって、なんなら腐った体で襲い掛かってくる。
そもそも代謝が停止していて栄養分が筋肉に渡ってないなら、筋肉を動かすエネルギーなんて全身に届くハズもない。
つまり体が動くハズがないので、あくまで感染したら食う以外の思考が全部ぶっ飛ぶ前提とする。

「食う事しか考えない」最もアホな型

実写映画バイオハザードの一番最初の作品で、AI が「食う事よ」と言っていた。
まさかと思うが「飲まない」とした場合、どうなるか?

結論: 1 週間以内にゾンビは全滅する(ゾンビの死因は脱水症状)

人は発汗だけで1日 1.5~2リットル ( 1日に必要な水分量は? | BRITA® )ここにトイレ等も含めると、普通に 2.8~3 リットルは最低限欲しい。
が、人肉でこれを補給する場合、人体の水分の割合は 7 割で、ここから 3 リットルの水を得ようとすると 4.29kg もの肉を食うことに…

見れば分かるが、こんな質量の肉1日に食えません…当然消化だってしなきゃいけないし排泄だって必要ですもん…
ということで、「水を飲む」ことを止めたゾンビは早晩行動不能に陥る。

「感染者は非感染者しか襲わない」という識別型

バイオのCG映画系でよく見る生物兵器型。
兵器である以上一定の指向性が必要だから当然と言えば当然か。

これは話が早い。ゾンビ化しようが何しようが、結局のところ体を維持するなら水と食料がなければ行動できない。
ウイルス感染だろうが細菌感染だろうが、人間の体を動かす以上このルールは守ってもらおう。

共食いが発生しないのであれば、およそ2週間(近くに水源がある場合)で人は餓死する。
水源が近くにない(公園のため池などの無い市街地)であれば 3日程度で行動不能に陥る(脱水症状で死ぬ)。

結論:住んでいる場所にもよるわけだが、最長でも 2 週間、最短3日ほど立てこもれば、ゾンビはほぼほぼ全滅している。

「共食い可能」な無差別型

前提として、ゾンビは冷蔵庫や冷凍庫を漁らないこととする。
映画的にそんな知性がないと想定する。

すると、感染後に食うものはペットか人間かゾンビかに限定される。
(ハト位なら捕まえて食うかもしれないが…一旦考慮しない)

女性の1日の消費カロリーは 1400~2000kcal (農林水産省)で、男性ならもっとある。
人の筋肉は豚に近いので、100g = 386kcal と仮定すると、1400 / 386 = 3.626943005181347 ざっくり 3.63 とすると1日あたり 326g の共食いをすれば生存可能と思われる。これは意外に少ない。
人間の体重を 65kg とし、骨格はおよそ 15% なので、過食部分を 55.25 kg とすれば 1 ゾンビ当たり 169.5 ≒ 170 ゾンビの1日あたりの食料になりえる。

意外…というとなんだが、単純にカロリーだけで考えると以外にコスパ良いのにびっくり…

水が豊富に存在する公園のため池近辺と仮定(水源の無い領域だと1週間程度で脱水して死ぬ)ここにどの程度のゾンビが集まるのかによる。
凄くわかりやすく考える為に 170 匹のゾンビが公園暮らしを始めたとする。これが共食い(しかも死亡している個体を優先的、かつ必要最小限で食った)と仮定すると、どれくらい生存するのか?

zombies = 170  # ゾンビの初期人数
per_eat = 170  # ゾンビ1匹の犠牲で支えるゾンビの食料
current_eatable = 0  # 食料

def next_day():
    global zombies
    global current_eatable
    # 食料よりゾンビが多ければゾンビ1匹が犠牲になって食料を支える
    if current_eatable < zombies:
        current_eatable += per_eat
        zombies -= 1
    current_eatable -= zombies

days = 0
while zombies != 1:
    days += 1
    next_day()
    print(f'Day:{days}, zombies: {zombies}')

print(f'Day:{days}, zombies: {zombies}, {current_eatable}')

としてシミュレートすると

Day:1, zombies: 169
Day:2, zombies: 168
Day:3, zombies: 167
Day:4, zombies: 166
Day:5, zombies: 165
Day:6, zombies: 164
Day:7, zombies: 163
Day:8, zombies: 162
Day:9, zombies: 161
...

おー結構生き残る?最終的に

Day:803, zombies: 1, 170

マジか… 803+170 = 973 日生き残るのか…もっとも死んだゾンビは腐らない、ゾンビは他の理由で死ぬことはないという仮定に仮定を重ねた話なので、一概にこうだとは言えない訳だが…。