第5話 平方根

 アンネ先生には平方根の演算魔法陣の試作が遅れることを了承してもらった。左手の怪我をひどく心配されてしまった。「お守りです」と渡されたのは組み紐のアミュレット。左手に巻きつけ、怪我のいましめとする。


 アンネ先生は学生の間ではアカデミーの花などと呼ばれているようだ。可憐な雰囲気があるが、アカデミーの研究員をやっているのは伊達ではなく、天文学の鬼のような人である。3度の飯よりも天体観測が好きなような人で、すっかり嫁き遅れてしまった、などと本人は話していた。


 学生などは教鞭をとるアンネ先生の迫力に気圧されして、ただ物陰から秋波しゅうはを送るといった情けない有様である。凛とした姿はりりしく格好良いものであるが、なればこそ高根の花というところであろう。




 ところで、平方根の計算というのはいささか面倒ではあるのだが、筆算で手計算することができる。筆算というのは素晴らしいもので、その手順さえ守れば誰でも同じ結果を得ることができる。これは魔法陣を組む上では重要な概念だ。魔法陣が自発的に何かを考えてくれるわけではないので、魔法使いは求める挙動をさせる手順アルゴリズムというものを考案しなければならない。


 平方根の計算方法は、原始的には近似をあてずっぽうに探っていく。例えば52の平方根を考えてみよう。

6×6 = 36

7×7 = 49

8×8 = 64

であるから52の平方根は7と8の間にあるはずである。さらに


71/107.1 × 71/107.1 = 5041/10050.41

72/107.2 × 72/107.2 = 5184/10051.84

73/107.3 × 73/107.3 = 5329/10053.29

であるから52の平方根は72/107.273/107.3 の間にあることになる。


 しかし、このやり方では手間がかかるため、より効率的な手法が考え出された。


 整数での近似 7 で元の数を割った値、(52 / 77.428571…) と 最初の近似値 7 の間に求める平方根があるはずだ。この二つの平均をとって次の近似を得る (101 / 147.214285…)。次にこの近似で元の数を割って( 52 / (101 / 14) 7.207920…) その値と近似値 101 / 14 7.214285…との平均をとって 20393 / 28287.211103…

注)これは√52 = 7.211102… をよく近似できている


 こうして繰り返すことで効率よく精度の高い近似値を得るという方法だ。これを効率よく筆算で行うように工夫されたのが平方展開の筆算アルゴリズムである。この手続きを魔法ゲートの組み合わせで表現するというのがアンネ先生から依頼された魔法陣の骨子である。



 研究室に戻って、まずは掃除をする。魔法陣は血で描かれるので、血の汚れによって容易に破損する。怪我をした場合や、血で作られた導通インクをこぼした時などは念入りに掃除しておかないと、予期せぬ血痕で魔法陣が想定通りに機能しないことがある。


 掃除がひと段落したところで、ようやく試作の記憶回路フリップフロップの魔法陣のテストを行える。試作なので僅かに3つのフラッグがあるだけ。しかし、ごく小規模ながらこれで加算結果を記憶することが可能なはずだ。


 魔法陣の動力部分に左の手のひらを重ねる。体内で作られた魔力は心臓から血を通じて人体の隅々にまで送られる。その魔力は手のひらから魔法陣に伝えられ、魔法陣が鼓動する。


 魔法陣の鼓動が落ち着いたら魔法陣のスイッチを操作して記憶回路フリップフロップの状態をクリアする。記憶回路フリップフロップは信号を反転しあう魔導ゲートの組み合わせによって作られているから、初期状態はほんの僅かな魔力のゆらぎによってフラッグが立った状態になるか、立っていない状態になるか不確定ランダムだ。なので明確なクリア処理が必要になってくる。まずはフラッグが立っていない状態にする。(_ _ _)


 ここに1を加える。右端のフラッグが立つ。(_ _ 🚩)よし、うまく動いている。さらに1を加える。(_ 🚩 _)よし。2進数の繰り上がりがうまくいっている。さらに1を加えるごとに(_ 🚩 🚩)(🚩 _ _)とフラッグは変化し、うまく2進数の加算魔法陣として機能していることを確認できた。魔法陣の動力部分から手を離すと、魔法陣の鼓動はおさまり、フラッグは霧散した。


 素晴らしい……!


 試作は僅かに3つのフラッグではあったが、魔導ゲートの組み合わせ方は確立できた。同じ回路を複製していくことでフラッグの数はいくらでも増やせるだろう。10本のフラッグであれば1024までの数を扱えるし、20本のフラッグであれば約100万までの数を扱うことができる。国家予算を扱うにもこのぐらいのフラッグで足りるはずだ。


 まずは計算結果を記録して連続で加算することが可能な魔法陣を試作してみるとするか。



 作業台に新しい板を用意する。左手の怪我がズキズキと痛む。アミュレットを見て平方根の演算魔法陣の失敗が思い出される。落ち着いて作業しなければ。


 まてよ。平方根……?


 もしや平方根も2進数で演算すれば魔導回路を単純化することができるのでは……?桁数は多くなるが、各桁の魔導回路は2進数だと格段にシンプルになる。まてまてまて。さらに記憶回路フリップフロップを計算用のワークエリアにすることもできるのではないだろうか!


 いろんな糸が繋がったように閃きが頭を駆け巡る。下書き用の木炭を手にした私は、一心不乱に魔法陣の設計を描いていた。


----------


アルゴリズムの話として平方展開の筆算について取り上げました。コンピュータ・プログラムで言うところのアルゴリズムに近しいかつ、一般的に認知度の高いものとしてはやはり筆算だと思うのですが、足し算や掛け算の筆算では面白みにかけるのもあり、作中では平方展開を扱っています。具体的なやり方は検索してみてくださいね。


フリップフロップのメモリと2進数による加算器というのは専門的になってきますので記述の踏み込み具合の加減がなかなか難しいですね。雰囲気でなんか大変なことしてるなあと感じていただければ十分かと思います。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る