欢迎光临散文网 会员登陆 & 注册

S11G5 Nim遊戲與二進位

2021-10-17 21:13 作者:学用数学  | 我要投稿

       Nim 是一个双人游戏,有三堆数 3,4,5 两人轮流从一堆中取任意多颗子,取到最后一个的人获胜。这次就用 GGB 来实作这个游戏介面,并且用数学来分析其必胜法。


任务一 用序列画圆圈


說明:

利用序列構造系列圓,A列的圓以(1,k)為圓心,0.5為半徑,k的範圍從1到A2,B、C、D列以此類推.

操作:

表格區A到D列前兩行輸入:3、 4 、5、 6

As=Sequence(Circle((1,k), 0.5) , k, 1,A2)

Bs=Sequence(Circle((3,k), 0.5) , k, 1,B2)

Cs=Sequence(Circle((5,k), 0.5) , k, 1,C2)

Ds=Sequence(Circle((7,k), 0.5) , k, 1,D2)


任務二 用按鈕控制增減


說明:

為了達到更直觀模擬遊戲的效果,利用按鈕腳本設置增減,按一次取一個,為避免不夠取出現負數,在A2-1與0之間取最大值,最後重置還原.

操作:

SetValue(A2,max(A2-1,0))

SetValue(B2,max(B2-1,0))

SetValue(C2,max(C2-1,0))

SetValue(D2,max(D2-1,0))

SetValue(A2,A1)

SetValue(B2,B1)

SetValue(C2,C1)

SetValue(D2,D1)


任務三 轉換為二進位判斷必勝局


說明:

此遊戲的必勝狀態可用二進位來表示,在此節先將每個數的二進位結果輸入在下方。

以  13 為例,其可表示為 1 + 4+ 8,因此其二進位為 1101。要取得每個對應位的數值,可利用整數除法與取余數來達成。例如  13/4= 3 ...1 ,而 mod(3,2)= 1 ,因此 13 在 二進位中,4 所對應的數值就為 1。 

操作:

在F列输入:1、 2、 4、 8

在A3输入:mod(floor(A$2/$F3),2)

在A4输入:mod(floor(A$2/$F4),2),再复制

在E3输入:mod(Sum(A3:D3),2),再复制


小結

從最後的數學分析可知用二進位構造不變量可保證Nim遊戲必勝,二進位有關的應用還可參照

連接

【GGB】https://www.geogebra.org/classic/yg5fkzvm
【Bili】https://www.bilibili.com/video/BV1Gv41137qQ?p=2

【YouTube】https://www.youtube.com/playlist?list=PLXH05kw-i_5K29wEnj12-hDBapErw9pea

S11G5 Nim遊戲與二進位的评论 (共 条)

分享到微博请遵守国家法律