どうも、囲碁アートの関です。
今回から二回に分け、囲碁計算機で
123456789+987654321=1111111110
をやってみようと思います!!
1億2345万6789円と9億8765万4321円を足すと、11億1111万1110円になるそうです。欲しい
前回の記事では、囲碁計算機を十進法から二進法に進化させ
0が白で、1が黒
として、取られた石の色で計算結果を出力する方法を紹介しました。
「どうせ複雑でわかりにくいんでしょう・・・?」
と思われそうな気がしますが、
そうです!←
正しく使うために要求される囲碁の力は、おそらく初段以上。
それも、囲碁勢の8割が最も苦手なジャンルとしているであろう「終盤」のやりとりです。
しかし、使う配置は少なく、2つのパターンの盤面を使い分けていきます。
0と1しかありませんから、慣れれば当てはめていくだけになります。
なにより、客観的に正しくなっていること自体が大切です。
2つのパターンをご紹介
まず「半加算器」です。
これは「0+0=00」「0+1=01」「1+0=01」「1+1=10」ができるというものです。
これが、大変がんばった形でして
二進法の計算をすると、答えの数字が二つになるんですよね。
たとえば1+1は、いつもの計算(十進法)だと「2」ですが
二進法だと「10」となります。次の桁への繰り上がりがあるのです。
そのため、一つの碁盤で二つの石が取られるようにした、というところを頑張って作りました。
1+1をしてみました。
1は黒石なので、AとBの両方に黒石を入れ、そこから囲碁の最善手を打っていきます。
上側で黒1の黒石が取られ(●)、続いて黒3により白石が取られました(〇)。
●〇・・・ということで10、つまり1+1=10 となったのでした。
今度は1+0ですが、0は白石ですので、Bの場所が白石になっています。
こうなると囲碁のいい手が変わって、黒1はここになります。
白石を取り(〇)、右下では黒5と打って黒が取られる(●)。
〇●という形で取られたので、「01」が答えとなりました。1+0=1ですね。
さて、これで「足し算」じたいはできました。
しかし、「2+2」ですとか「5+5」など、もっと大きい数を足し算するには、これだけだと無理です。
「繰り上がり」が起こった場合に、それも含めないといけません。
そこで、もう一つの盤面と使い分けることで、足し算を進める作戦を採用しました。
たとえば「11+11=111 110」(十進法だと3+3=6)をするとき
(この計算を間違えて表記していました、訂正いたします)
一桁目どうしの「1+1」と二桁目どうしの「1+1」(10+10です)をします。
いつもの十進法でいうと、25+36で「5+6」と「20+30」をするのと一緒です。
しかし、一桁目の「1+1」をすると「10」で、二桁目への繰り上がりの「1」が生まれています。
それを含めると、二桁目は「1+1+1」をしなければならない・・・
つまり、「20+30」だけでなく、「20+30+10」をするのと一緒です。
そのために左側の碁盤を導入。繰り上がりの計算に対応しました。
似ていますが、囲碁の戦況がちょっと異なっており、
「1+1+1」という、より複雑な形にも対応できるようになっています。
この二種類の碁盤を使い分け、
1回目の足し算&繰り上がりがない場合は、前者「半加算器」
繰り上がりがある場合は、後者「繰り上がり加算器」
により、いくら大きな桁の足し算でも可能となります。
そこで、「123456789+987654321」
二進法にしますと
「 111010110111100110100010101
+111010110111100110100010110001」
27桁と30桁ですが、前者の頭に「000」をつけて30桁として扱います。
30桁もの計算を、いかに行うのでしょうか・・・!?
後編に続きます!
「マルシェル」にて販売中
「囲碁の仕組みだけでコンピュータの基礎を作ってみた」
において、二進法の研究成果を解説しております。
図と文章で、より分かり易くなっているはずです!
ぜひお手に取っていただけたら嬉しいです!!
正しいことを2つ並べれば、当然答えも正しい
したがって 1+1 = 1
次は いかがでしょう・・・❔
大豆1合+米1合では、
隙間のために必ずしも2にはならぬという頓智みたいな算術です。
https://blog.goo.ne.jp/iinna/e/7b0f3b1d35e4c4adc78bfd269803a9aa