『マリオメーカー』で計算機を作る人、ついに31+31を5秒で計算できる回路を生み出す!
今回紹介するのは、完熟ニコみかんさんが投稿した『マリオメーカーで31+31が5秒で計算できる回路を説明してみた。』という動画です。
投稿者メッセージ(動画説明文より)
小型化・高速化しました。
マリオメーカーで31+31が5秒で計算できる回路を説明してみた。
任天堂のゲーム『スーパーマリオメーカー』で計算機をつくる人が、研究を重ね、ついに「31+31」を5秒で計算できるようになりました。
『スーパーマリオメーカー』は、オリジナルのコースを作って遊ぶものです。2015年のゲーム発売直後「3+3」を計算する動画が投稿され、その後、複数の有志により脈々と開発が続いています。
今回の動画は「31+31」を5秒で計算するというもの。相当な高速化が図られています。その動きを見ていきましょう。
入力は2進数です。「31+31」を2進数で表すと「11111+11111」。10個並んだ音符ブロックが入力に対応しているので、まずは全部叩きます。
音符ブロックから飛び出したトゲゾーは、画面右側に流れていきます。画面右端にある氷ブロックが計算結果を示しています。このブロックの上にトゲゾーがいれば“1”、いなければ“0”を示しています。
出力は6桁で、上から読みます。一番下のみトゲゾーがいない状態ですので、結果は“111110”。10進数にすると62です。きちんと計算できています。
次のデモンストレーションは「31+1」。これは2進数にすると「11111+00001」です。入力の音符ブロックは左から、足される数の16の位、足す数の16の位、足される数の8の位、足す数の8の位……の順で並んでいるので、“1010101011”と入力します。
一気に桁上がりが起こり、“100000”すなわち10進数の32が出力されます。
仕組みはどうなっているのでしょうか。コンピューターと同様、半加算器から考えます。半加算器は2進数の「1+1」を計算するものです。繰り上がりの桁と、1の位が出力されます。
音符ブロックが入力で、出力は右側を見ます。右側の上段が繰り上がり、下段が1の位を示します。メットがいれば”1”、何もいなければ”0”です。
左側の音符ブロックを叩くと、右下の1の位を示すスペースにメットが入ります。
続けて右側の音符ブロックを叩きます。すると、飛び出たメットは、右下の1桁目を示すスペースにすでにいるメットを弾き飛ばします。
同時に、右側上の桁上がりを示すスペースにもメットが入りました。結果は“10”(10進数の2)となり、1+1が計算できました。
半加算器を応用して、下からの桁あがりも入力できる全加算器をつくります。
全加算器をいくつも組み合わせて、5桁+5桁の演算装置をつくりました。同様の計算は、2015年には20秒かかっていました。驚きの進化です。
文/高橋ホイコ