2014年12月17日水曜日

【番外編】印度式。

おはようございます、今回はテレビで取り上げられていた「インド式掛け算」もどきの特集に、筆者が興味を掻き立てられたので、そこのあたりを掘り下げていきたいと思います。

まず、12*12=144の式です。TVでは違う数字をやっていました、確か31*13とか、そのあたりだったと思います。

実際に式を書いてみます。


12      ×      12
被乗数  演算子   乗数

このようになっています。
次に、被乗数を10^1(=10), 10^0(=1)と、上位の桁ごとに分解して、上の写真のように、下の段から横線を10^1の個数分、上にスペースを開けて10^0の個数分、横線を引きます。

そして、縦の線も同様に、乗数を上位の桁ごとに分解して、n*10^xのxの大きい方から順に、n回線を引いて、右向きにスペースを開けて下位の桁、その下位の桁、・・・というように縦線を順に引きます。

するとどうでしょう。縦線と横線で構成された格子の左下隅が10^1*10^1=10^2, すなわち100の位になります。
格子で出来た四角形の対角線上(上の写真で斜めに囲っているところ)は10^0*10^1 または10^1*10^0、つまり10の位になっています。
最後に、右上の4つの格子の交点が10^0、即ち1の位です。

あとは、100の位のエリア、10の位のエリア、1の位のエリアの交点を数えてそれぞれの桁に当てはめると答えである144が求まります。

TVではここまで詳しく紹介されていませんでしたが、こういうことです。

この方法の感心すべき点は、「ナナメは桁が同じ」ということです。


もっと大きな数でやってみましょう。

適当に電卓をたたいて出した、123*456=56088です。

これを上記の方法で桁ごとに分解して、紙にプロットします。
出来たものがコレです。
左下と右上はそれぞれ最上位桁、最下位桁に対応しています。
この図で言うなら白丸が最上位桁の数値、黒丸が最下位桁の数値です。黒丸の個数が10を超えていますね。

さて、この図にも「ナナメは桁が同じ」ルールが当てはまります。
この図では3桁×3桁なので、斜めに読む箇所が3つあります。左下隅から右上端に駆けて、桁ごとに違う記号で交点に印を入れました。(`,' です(^^;) )
この記事では便宜上、順にバックスラッシュとカンマ、赤カンマと呼ぶことにしましょうか。
するとどうでしょう。
(バックスラッシュ)10^3が8+5で13個、
(カンマ)10^2が12+10+6で18個、
(赤カンマ)10^1が15+12で27個になりました。
交点の数が10を超えると上位の桁に繰り上がります。

式にすると
10^4*4 + 10^3*(8+5) + 10^2*(12+10+6) + 10^1*(15+12) + 10^0*18
= 40000 + 13000 + 2800 + 270 + 18
= 56088

面倒な事この上ないですが、視覚的に結果が返ってきました。


コンピュータやプログラミング言語はどんどん進化していってます。成長のスピードはあるにしろ、これからも衰えることはないでしょう。
むしろ変わらないものとして、また、大切なものとして、このような考え方というのは普遍的で、これからも変わることはないと思います。

結局何が言いたかったのかというと、電脳の世界がいくら変わろうとも、このような「考え方」即ち「アルゴリズム」は変わらない、だからこそ大事、ということです。


ここまで読んでいただき、ありがとうございました。

0 件のコメント:

コメントを投稿