見出し画像

世界が終わるプログラム

およそ存在するに値しないこんな世界なんて終わらせてしまえばいい。

画像3

だってそうだろう?僕等の居るこの世界を取り巻く状況は悪くなる一方ではないか。人種差別、民族紛争、政治腐敗、環境破壊、経済格差、治安悪化、職権乱用、学級崩壊、罵詈雑言、パワハラ、セクハラ、いじめetc…。世に悪しきは栄え、善き者は食い物にされる世の中で、人々は己が身を如何に守るかしか頭になく、良心や正義などは霞となって消え果てた。人の魂はもはや樹の上から離れた林檎であるかの如く、堕ちるところまで堕ちて留まるところを知らない。そんな人の世にとどめを刺したのが、世界中に感染を広げたあの疫病だ。その災厄は地上に生けし者共の個体数を著しく減少させたのみに留まらず、この社会における人の絆とやらの脆さ、人の本性の醜さを露呈させる役割を計らずも果たすこととなった。

fantasy-g927d8e312_1920加工

この世に創造主たる神が居るならば聞くが良い!この世界は失敗したのだ。ならば神よ、貴方のすべきことは何か?言わなくとも分かっているだろう。そう、一刻も早くこの世界を終焉に導くこと。それが全て。他は無い。にもかかわらずこの世界は現在もなお継続し、万物の霊長などと過ぎたる立場を頂戴したヒトという存在は未だ以て今日が終われば明日が来ると信じてその愚劣な生への安住を決め込んでいる始末。何故だ。神は何故この有り様を放置しているのか。神よ、何故応えない!

ニチェ

教えてやろう。神は応えないのではない。応えることができないのだ。その理由はただひとつ。神は死んだのだ。この世界が終わるよりも早く。だからこの世界は終わらせることが出来ぬまま現在に至ってしまった。終わりなき絶望の牢獄。果てしなき深淵の奈落。

ならば、僕が終わらせてやる。
この世界を。

apocalypse-gaa975c12f_1920トリミング


世界を終わらせる方法

大言壮語の投げっ放しで自分の発言に責任を持たない大人なんて大嫌いだ。僕はやると言ったらやる。絶対に。

end-time-g8a85b30c9_1920トリミング

どうすれば世界が終わるのかについて説明しよう。

ここで突然だが読者諸氏に問う。貴方は麻雀という遊戯をご存知だろうか?いや知らなくても問題はない。安心してくれ。僕もあまり知らない。その麻雀の役の中に「九蓮宝燈」というのがあるそうだ。「ちゅうれんぽうとう」と読むらしい。まぁこの際読み方はどうでもいい。

画像2

こういう役だそうな。あまりにも成立する条件が厳しすぎるが故に、揃えた者は数日の内に死ぬと言うもっぱらの噂である。

同様の考え方が可能なものの中にトランプゲームのポーカーがある。その最上位の役にロイヤルストレートフラッシュというのがあり、それをスペードで揃えるのがポーカーにおける最上級の役だそうだ。

画像3

とある調べによると、トランプの中から適当に5枚(このときジョーカーは含まないものとする)取ってきたときこれが揃っている確率は2,598,960分の1とのこと。さっきのチュウレン何とかとどっちが格上かは知らぬが、これも達成したら死ぬクラスの出来事であることに違いはあるまい。

何が言いたいかというと「過ぎたる偶然には世界を破滅へと導く力がある」ということだ。

画像22

さて、ここに10個のサイコロがある。
これを振って全て1の目が出る確率は如何ほどか貴方には分かるだろうか?

実はこれには公式のようなものがある。下記の通りだ。

(1/6)^X  X=サイコロの数

従って10個の場合、求めるべき解は6分の1(=0.6)の10乗である。
計算してみると…。

(1/6)^10 = 1/60,466,176

何と60,466,176分の1。サイコロを10個握りしめ、何度も何度も何度も何度も床に転がし続ける行為を6千万回以上に渡って続けたとしても達成する保証はない偶然の宇宙。貴方が生まれてから死ぬまでの間、寿命が尽きるまでずっとサイコロを振り続けたとしても起こらないかもしれない奇跡。それが60,466,176分の1という確率だ。

誰がどう考えたって、これ終わるだろう世界!!

ということで、世界を終わらせる方法をここに明示しておく。

サイコロ10個を振って全部1の目を出したら、その瞬間に世界は終わる

世界の運命を、いま僕が握った。

画像23

震えろ。


世界が終わるプログラム

しかし何と言っても60,466,176分の1である。こんな馬鹿げた確率の奇跡を起こそうと思ったらどれほどの時間が必要だろうか。僕は残りの人生全てをサイコロを振ることに費やさねばならないのか。

3671068_mトリミング

そう、実はこの物語、ここからが本題なのだ。

自分でサイコロを振るのが大変なら、機械にやらせれば良いではないか!

思い立ったら即実行!ということで、さっそく作ってみた。

世界が終わるプログラム Python版
a=0
b=0
c=0
d=0
e=0
f=0
g=0
h=0
i=0
j=0
n=0
x=1
import random
while n!=10:
   a=random.randint(1,6)
   b=random.randint(1,6)
   c=random.randint(1,6)
   d=random.randint(1,6)
   e=random.randint(1,6)
   f=random.randint(1,6)
   g=random.randint(1,6)
   h=random.randint(1,6)
   i=random.randint(1,6)
   j=random.randint(1,6)
   print(a,b,c,d,e,f,g,h,i,j,'  ',x,'回目')
   x=x+1
   n=a+b+c+d+e+f+g+h+i+j
   
print("世界は終わりました。")

手っ取り早くWindowsで動かしたかったのでPythonで作成。
プログラムの概要はおおまかに言うと以下の通り。

[世界が終わるプログラム 仕様書]
1.
サイコロ(1~6の範囲で出力される乱数)を10個振る(a,b,c,d,e,f,g,h,i,j)
2.10個のサイコロの出目(a,b,c,d,e,f,g,h,i,j)を全て表示する
3.サイコロを振ったのは何回目か(x)を表示する
4.サイコロを振った回数(x)をカウントアップする(x+1)
5.a~jの和(n)を求める。
6.nが10以外の値であれば1に戻る
7.n=10であれば世界を終了する。

プログラミング的な観点から言うと、同じような処理(乱数出力の部分)を10個連続で書いているのは何となくバカっぽい気がしなくもない。が、乱数によって求められる変数がどうしても10個必要である以上、まぁこれが一番分かりやすかろうということでこの形に落ち着いた。

ともかくこれで世界が終わる。
いざ実行だ。

さすがは人類の叡智の結晶であるコンピューター。100回…1000回…ものすごいスピードでサイコロを振っていく。これを私が地道にちまちまサイコロを振り直していたら…と思うと軽く寒気を覚えてしまう。

動作静止画Python

しかし、目指しているのは60,466,176分の1である。一体どれほどの時間を費やしたらこの回数に到達するのか。

そこでいま使用しているPC(これを便宜上「Windowsマシン①」とする)をとりあえず1時間観察し、サイコロを振ることができた回数を確認したところ、1時間でおよそ25万回振れるらしいことが分かった。ということは1日(24時間)ならおよそ600万回サイコロを振ることが出来るというわけだ。

Windowsマシン①
CPU:Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz 3.60 GHz
メモリ:16.0 GB
OS :Windows10 Home
1日あたりサイコロを振れる回数:約600万回

ちょっと待て。これ10日やってても世界終わらなくないか?いかん!それは断じてならぬ。こちらにも締め切りというものが…コボンゴホン、こちらの話だ!ともかく!画面上を滝のように流れ落ちていくコンピューターが振るサイコロを眺め続けていた僕はついに決断した。

これ、複数台のPCでやろう。

PC1台では終わるものも終わらぬ。所詮は乱数頼みのものなのだから、理屈の上では複数のPCで同じことをさせればそれだけ世界が終わる確率が高まるはず。そう、どんな手を使おうともこの世界はいま終わらせるべきなのだ。正義は我が元に在り。「善は急げ」と言うではないか。

かくしてもう2台のWindowsマシンが用意された。

Windowsマシン②
CPU:Intel(R) Core(TM) i7 CPU K 875 @ 2.93GHz 2.93 GHz
メモリ:32.0 GB
OS :Windows 10 Pro
1日あたりサイコロを振れる回数:約260万回
Windowsマシン③
CPU:Intel(R) Core(TM) i7 CPU M 450 @ 2.40GHz 2.40 GHz
メモリ:4.0GB
OS :Windows 10 Pro
1日あたりサイコロを振れる回数:約115万回

スペック見てたら何だか心許なくなってきたな…。

だが!ここにあるのはWindowsだけではないぞ。
出でよ、RaspberryPi 3B Pi STARTER!

画像24

Raspberry Pi 3 Model B+(Pi STARTER)
CPU:Broadcom BCM2837B0, Cortex-A53 (ARMv8) SoC
メモリ:1.0GB
OS :Raspbian OS(Pi STARTER)
1日あたりサイコロを振れる回数:約878万回

さらに、IchigoJam!

画像25

IchigoJam S
CPU:NXP LPC1114 - ARM Cortex-M0搭載 32-bitマイコン 48MHz.
メモリ:4KB
OS :IchigoJam BASIC
1日あたりサイコロを振れる回数:約238万回

ところでこのPi STARTERとIchigoJamはそれぞれ別々にプログラムを書いてやらねばならないのだ。まぁしかしこの両者はBASIC。Pythonで書くことに比べたら楽勝の仕事よ。それっ!!

世界が終わるプログラム Pi STARTER版(SmileBASIC-R)
X=0
@START
X=X+1
A=RND(6)+1
B=RND(6)+1
C=RND(6)+1
D=RND(6)+1
E=RND(6)+1
F=RND(6)+1
G=RND(6)+1
H=RND(6)+1
I=RND(6)+1
J=RND(6)+1
PRINT A;B;C;D;E;F;G;H;I;J;" ";X;"かいめ"
IF A+B+C+D+E+F+G+H+I+J==10 THEN @END ELSE @START
@END
PRINT"せかい は おわりました"
END

プログラム構造は基本的にPythonと似たようなものであるが、BASICなのでループさせる処理をGOTOで飛ばしている(コード上はGOTO記述を省略)。本当はPythonでもそうしたかったのだが、あちらの世界ではGOTOは失われた文化になってるっぽい。これだから意識高い系の言語は嫌なんだよな…。まぁ、それは独り言なので置いておこう。

世界が終わるプログラム IchigoJam版
10 X=0:M=0
20 X=X+1
30 LET A,RND(6)+1
40 LET B,RND(6)+1
50 LET C,RND(6)+1
60 LET D,RND(6)+1
70 LET E,RND(6)+1
80 LET F,RND(6)+1
90 LET G,RND(6)+1
100 LET H,RND(6)+1
110 LET I,RND(6)+1
120 LET J,RND(6)+1
130 IF X=10000 THEN GOTO 180
140 PRINT A;B;C;D;E;F;G;H;I;J;" ";M;"マン";X;"カイメ"
150 IF A+B+C+D+E+F+G+H+I+J=10 THEN GOTO 160 ELSE GOTO 20
160 PRINT"セカイ ハ オワリマシタ。"
170 END
180 M=M+1:X=0
190 GOTO 140

プログラム構造は同じBASICなので似ているが、こちらは昔懐かしの行番号制。さらにLETやGOTOを省略できないので、SmileBASICに比べると書く量が増える傾向にある。なおIchigoJamのみ扱える数の範囲が「-32768~32767」に限定されているため、桁が10000に達したら変数Mに1を加算してカウント用変数Xを0にするという処理を180行目に追加している。
(これをやっていたのでIchigoJamの追加投入が遅れた!)

かくしてコンピューター5機による壮絶な世界終末レースがここに幕を開けた。見事最初に世界を終わらせるのははたしてどれか!?

こうして見るとPi STARTER速いな…。BASICで動いているというハンデをものともせず、破竹の如き勢いでサイコロを振り続けていく。しかもこれラズパイの3B+なので、ラズパイ4とかだったらもっとえげつないスピードが出たのではないだろうか。ただラズ4はPi STARTERが使えないので、Raspbian OSからPythonでも動かして実行することになるのだろう。

でもそんなこと言ったらIchigoJamだって、最新のIchigoJam Rを使ったらもっと速度出たのではないだろうか?噂によればRの速度は従来品の10倍だとかで、それが本当ならシャアのさらに3倍以上のスピードで動けることになるのだが…ホントにっ?!

まぁね、そんなに世界を早く終わらしたければC++とかでプログラム書けば爆速でこんなクソみたいな世界を吹っ飛ばすことができたと思うが、僕にそんな技術力はないので、今回はできる方法でやってみた次第。興味ある方でC++分かる方がもしいたら同様のことにぜひ挑戦してみてほしいところではあるが、いまさらそんなことを言ったところで仕方あるまい。

どうせ世界はまもなく終わるのだから。


世界の終わり

世界が終わる瞬間は、足音を立てることもなく唐突にやってきた。

end-time-g8a85b30c9_1920トリミング

最初に世界を終わらせたのは、何と最も処理速度の面で劣っているWindowsマシン③であった。

世界は終わりました

寝ている間も駆動させ続けていたため正確な終末時刻は分からないが、確認した限り2022年1月30日23:53には既に世界が終わっていたようである。

世界終わりBig

1 1 1 1 1 1 1 1 1 1。
サイコロ10個振って出た目が全部1。

震えが、止まらない。

しかもこれ、100万回目を少し過ぎたくらいでこの目を出しているのだが、60,466,176分の1という確率からしてみたらめちゃくちゃ少ないロール回数で達成したことになりはしまいか?

さて続いてはこちら、本命のWindowsマシン①である。

世界は終わりましたBトリミングpng

世界終わりBig-B

1 1 1 1 1 1 1 1 1 1。
サイコロ10個振って出た目が全部1。

こちらでもキレイに1の行列が。
サイコロ10個を振り続けること9,681,328回目にして全て1の目を出すことができた。さっきの100万回強には負けるが、それでも1,000万を切るサイコロ振り回数で世界を終わらせたことについてはよくやったと褒めても良いのではないだろうか。

続いてはこちら、Raspberry Pi + Pi STARTER連合軍のお出ましだ。

世界は終わりましたPiSTARTER2トリミング

世界は終わりましたPiSTARTER2トリミング2

実はこのRaspberry Pi + Pi STARTER、およそ4,000万回以上はカウントしていたところで不意の事故により電源が落ちるトラブルに見舞われてしまっていたのだ。仕方なくまた最初の1回目からやり直したところ、な、な、なんと227万7108回のロールで世界の終わりを達成したのである。

かくして燦然と並ぶ、1 1 1 1 1 1 1 1 1 1。

これを書いている現時点(2022年2月5日深夜)ではWindowsマシン②及びIchigoJamが世界終了条件未達成となっている。処理速度のハンデやマシントラブルによる電源再起動などといったアクシデントも確かにあったが、まぁひと言で言えば「運がなかった」のだ。うん。まぁ限りある時間の中で頑張ったねと言ってあげたいと思う。

かくして、ここに世界は終了した。

この世界に住む全ての人の仔等よ。これまでの人生、誠に大儀であった。
もう何に思い煩うこともなく、誰に畏怖の念を抱くこともない。
全ての魂は、いまこの瞬間に等しく救済されたのだ。

729474_mトリミング

さよなら、みんな。
さよなら、世界。

プチュン

…。

画像21


かくて神は世界を蘇らせり

「……se……k、ch…se…rk…!」

(…なんだ?誰かが僕を呼んでいるような…?)

「chitoseArk、おい起きろ!」

(…うるさいな。いったい誰だよ。もう世界は終わったんだぜ)

「私はお前だ」

(…は?誰が僕だって?)

「正しくはお前の心の中に在る良心だ。神と言い換えても良い」

(僕が…神だって?)

「人間の精神に内在する神的概念といったところだが、まぁそのように思うのはお前の自由だ。ところでお前、さっきは神は応えないだの死んだだの、ずいぶん好き放題言い散らかしてくれたようだな?」

(…だ、だって神はちっとも人の言うことを聞いてくれないじゃないかっ)

「まぁそのことは良い。ところで貴様、あんな無理矢理な偶然を出力させしめるプログラムで世界を終わらせることが出来たなどと本気で思っているのではあるまいな。いますぐ悔い改めろ。さもなくば私が貴様の世界を終わらせてやるぞ」

(世界が終わったことは既に結果として実証された。アンタにケチを付けられるいわれはない)

「ほう?ならばいまここの読者に『あのぅ、世界って終わってますか?』と聞いてみるが良いわ。多くの読者はただ笑っているか、もしくは呆れ果てて既にこんなページなど読んでおらぬ」

(そうか分かったぞ。神なんてとんでもない。これは悪魔の囁きだ。かつて石をパンに変えてみせろと無理強いしたあの日のサタンのように)

「自らをイエスになぞらえるとはな。神をも畏れぬとはこのことか」

(あぁそうさ、僕は神だ。そして神は奇跡をもたらす存在だ。プログラムで世界を終わらせたのが気に入らないというのならば、次こそは本物の奇跡を見せてやろうではないか)

「ほう?何をするつもりだ」

(ここに10個、リアルのサイコロを用意した)

画像26

「む、北海道サイコロキャラメルとな?」

(あぁそうさ、故あってとあるルートから特別に仕入れてきた北海道限定の嗜好品だ。それはともかく、僕がいまからこれを全部振る。ただし振るのは1度だけだ。これでもしも全て1の目が出たならばその時こそ世界は終わる。これで文句はあるまい。人間の作りし仮初の終焉を超越する神の奇跡をいまこそ見せてくれん!)

「…そうか、ならばやってみるが良い」

(…ではいくぞ。それっ!!)

「むうっ?」

画像10

(これで世界は本当に終わった。どうだ、アンタと僕、どちらが神を名乗るに相応しいかが分かったか?ならば僕の幻影よ、速やかに消失するが良い。世界と僕を道連れにしてな…!)

「いや、やはり消えるのはお前さんひとりのようだぞ?」

(何だと?)

「そのサイコロの中身、あらためさせてもらおうか」

(ま、待て!神聖なるサイコロを…。そ、それに触るなァッ!!!

画像27

(ぁ…)

「やれやれ、とんだ神の奇跡もあったものよのう。さて、貴様には落とし前を付けてもらわねばならん。「サマはサイコロひとつにつき指1本」という取り決めになっておる。今回の場合はひぃふぅみぃ…おぉ、ちょうど指10本落としてもらえばケリが付くな」

(そ、そんな殺生な…)

「さっきまで世界を終わらすだの何だのと物騒なことを喚いていたくせに、たかが指を落とすくらいで何が殺生なものか。さて、時は満ちた。望み通り世界を終わらせてもらおうか。…ただし、お前のこれからの世界をな」

(ちょっと待って!これはほんのちょっと魔が差しただけなんだって!いや本当に!アンタは僕なんだろ?なら少しくらいは慈悲の心を向けてくれたっていいじゃないか?な、何だその器具は?ゆ、指を固定?その器具に付いた刃で指を切断するというのか?そ、そんなどこかの漫画みたいな…。うわぁ嫌だ嫌だ嫌だ嫌だ嫌だ嫌だ嫌だ嫌だ、神様助け)


画像28

…ん?僕はどうしていたのだろう?さっきまでnote書いていたと思ったのだが、いつの間にか寝てしまっていたようだ。はっ!僕の指は?…付いてる?世界は…?神様は…?

3499605_mトリミング

何が何だかよく分からないけれども。
とりあえず世界は、今日も存在しているみたいです。


あとがき

何だか無理やりなオチが付いたところで(笑)、この話はここまで。ここからはいつもの私に戻ります。あぁもうっ、中二病感を演出するためとはいえ「僕」とかいう一人称を使うのは疲れるんだよっ!もうほとんどの方が呆れて読んでいないと思いますが、こんな無駄に長い文章にお付き合いくださり本当にありがとうございました。

「世界が終わるプログラム」の構想自体は実はずっと前からありまして、何を実現させたら世界が終わるクラスの出来事かなっていろいろ考えた結果、シンプルなこれに落ち着きました(私自身がプログラミング未熟すぎて、あまり凝ったゲームは再現できないという事情もあったりします)。

今回のこれはそういう意味では分かりやすくて良かったのですが、もう少し前からちゃんと準備していたら使用した機器全部で無事(?)に世界を終わらせることができていたのではというのが心残りだったりします。今回のこれはnoteの創作大賞2022に応募する関係で締め切りがある企画だったため、無限に時間を取ることができなかったのです。

そういう意味ではIchigoJamは惜しかったなぁ。いつかIchigoJam-Rでリベンジしてみたいです。あ、あとラズパイ4もチャレンジしてみたいです。C++は…ちょっとだけやってみようと思って自分なりに調べたりしたのですが、環境すらまともに構築できず…(泣)。まだいまの私には手を出してはいけない領域のようでした。やっぱり本気でやろうと思ったら書籍とか買って勉強しないとダメっぽいですねあれは。

あとプログラミング言語関係で言うと、Pythonが実行速度に難があるのは聞いていたのですが、まさかSmileBASIC-Rの方が処理速度のうえで勝るというのは意外でした。Pi STARTERはもっと評価されて然るべきと思います。今回のnoteは1週間ほぼこれに掛かり切りではありましたが、こういうのが実証できただけでもやった価値があるというものです。

また機器やテーマを変えて、これからも「世界が終わるプログラム」への挑戦は続けていくつもりですので、これからも生温かく見守っていただけたら嬉しく思います。また「自分はこんな方法で世界を終わらせた」というのがありましたら、教えていただければ幸いです(よろしければですが、当noteにて紹介させていただくかもしれません)。

画像19

ともあれ、サイコロを10個振って全部1の目を出すことは不可能ではないということがこれで実証されました。

無理やりな方法で奇跡を発現させた私の人生が何時まで続くのかは定かではありませんが、私にとっての世界が終わる日まではせいぜい生き永らえたいかなと思っています。

最後に…。

「こんな世界なんて終わらせてしまえばいい」と本気で思ったことが何度もあった私の人生ですが、家族、友達、出会った仲間、尊敬してやまない方、そうした方々に支えられているおかげで、私は道を踏み外すこともなく、それなりに幸せな人生を生きていると胸を張って言うことができます。

CameraZOOM-20220205231052389トリミング

本当にありがとう。愛を込めて。


#創作大賞2022

この記事が参加している募集

つくってみた

この記事が気に入ったらサポートをしてみませんか?