神算卡


引言

歡迎光臨本網頁。在這個網頁中,你可試用本人編寫的「神算卡」程式,並學習到「神算卡」背後的數學原理-二進制。明白了箇中原理後,你也可以進而製作自己的神算卡,成為一位「神算師」!

神算卡程式

瀏覽者可點擊下列連結,試用本人編寫的神算卡程式。該程式包含「使用說明」,瀏覽者只需依照說明上的指示便可使用該程式,請選擇適合你電腦的程式。

神算卡的原理

神算卡的原理很簡單,其實就是用二進制表達數字,即用0和1表達一切整數。學過初中數學的朋友都知道,在二進制下,一切整數都可表達為

an x 2n + an-1 x 2n-1 + ... a2 x 4 + a1 x 2 + a0 x 1 (註1)

其中an、an-1 ... a2、a1、a0等於1或0,例如,46這個數可以表達為1 x 25 + 0 x 24 + 1 x 23 + 1 x 22 + 1 x 2 + 0 x 1。因此在二進制下,46這個數便寫成101110。神算卡上的數字其實反映了0至63這64個整數(註2)的二進制表示法。每張卡上的6個孔其實代表2的某一個冪,從左至右依次代表25、24、23、22、2和1。其中黑孔代表1,白孔代表0。每張神算卡按照其黑孔所在的位置,分別代表2的某個冪。例如第六張卡的黑孔出現在最左邊,因此這張卡代表25,如此類推。

某個數的二進制表示法在哪些位上取1,這個數便會出現在相應的神算卡上。例如46這個數的二進制表示法是101110,即在25、23、21和2這四個位上取1,所以46這個數便出現於代表25、23、21和2的四張神算卡上。因此當你告訴程式哪幾張卡包含你心目中的那個數字時,你實際上是在告訴程式這個數字的二進制表示法。程式只需把這二進制表示法轉換為十進制表示法,便可成功「破解」你心目中的那個數字。讀者可不妨找幾個數字為例,看看這些數字的二進制表示法是否對應於它們在神算卡上的分佈。

製作你自己的神算卡

其實你也可以製作自己的神算卡,只要你的心算不是太差,你也可以作出一個精彩的「神算表演」。你只需取6張卡片,倣照本程式中的6張神算卡在每張卡上寫上適當的數字,然後用打孔器在每張卡的白孔所在位置打孔(黑孔位置則不要打孔)。這實際上等於用穿孔和不穿孔來分別代表0和1。在「表演」時,你先請你的「觀眾」想出一個數字(謎底),然後把包含謎底的那幾張神算卡交給你。你只要把這些神算卡整齊地疊在一起,那麼神算卡的頂部便會呈現謎底的二進制表示法。這時你只需把二進制表示法轉換為十進制表示法(註3),便可成功「破解」謎底。

概念推廣

如果我們把思路放開一點,我們會發現神算卡其實不一定要採取以上的形式。上述形式的實質是用二進制表示整數,並用黑白兩色(或不穿孔和穿孔兩種形式)分別代表1和0。但是除了二進制外,我們還可以有三進制、四進制等,其方法、原理跟二進制沒有很大分別。只不過這時我們不能單用黑白兩色來代表數字了。舉例說,在三進制下,我們須用三種顏色來代表0、1、2這三個數字,例如我們可以用白、灰和黑來分別代表0、1和2。而我們的神算卡也要比以上所介紹的複雜了。除了要有代表1、3、32、33 ...的神算卡外,我們還要有2、2 x 3、2 x 32、2 x 33 ...的神算卡(註4)。至於各個整數在神算卡上的分佈,當然也要作相應調整。就以46這個數為例,由於46 = 1 x 33 + 2 x 32 + 0 x 3 + 1 x 1,所以46的三進制表示法是1201。因此46這個數字應出現在代表33、2 x 32和1的神算卡上。

在極端情況下,我們甚至可以製作一些「十進制神算卡」,即用十種顏色分別代表0、1、2 ... 9這十個數字,並且要有代表1、2 ... 9、10、2 x 10、3 x 10 ... 9 x 10、102、2 x 102 ... 9 x 102 ... 的神算卡。但是這麼一來,我們的神算卡已再沒有甚麼「神秘感」,而只是用顏色來代替數字而已。


註1:請注意,21 = 2;20 = 1。

註2:本程式共使用6張神算卡。由於26 = 64,所以本程式只能處理0至63之間的整數。當然,如果你使用更多神算卡,你所能處理的整數便更多。

註3:轉換方法其實不難。你只需記著二進制表示法中每個位所代表的十進制數字(即從右至左為1、2、22 = 4、23 = 8、24 = 16、25 = 32),然後把取1的位置所代表的十進制數字加起來便成。例如二進制數101110在代表32、8、4和2這四個位上取1,我們只要算算32 + 8 + 4 + 2便知這個數的十進制表示法為46。

註4:例如代表2 x 33的神算卡的頂部應是這樣的:從右數起第4個孔應為灰色,其餘的孔則全部為白色(或穿孔)。

返回數學專題