機妙算(MindMaster)遊戲 II
程式由網友 SuperMANganese 提供。與前一個版本比較,改進之處是可以容許數字重複,因此可能的情況會增多,猜測難度亦提高。
更新日期: 2011年1月27日
程式一 (177 bytes,不記錄次數版本)
程式需要在 REG Lin 模式下執行,因此在選擇新程式位置後,按 5 1 選用REG Lin模式。
注意: 藍色的英文字為統計模式中的變數(Σx 按 Shift 1 2,Σy 按 Shift 1 → 2),α是按SHIFT 7 → → 2,E 是按 EXP。
Fix 0: Rnd(9Ran#→A: Rnd(9Ran#→B: Rnd(9Ran#→C:
Rnd(9Ran#→D: Norm 1: While Ans - 40: ClrStat: Lbl 1: Rec( 0, 0: ?→X:
α≧Abs(X-A => 9 DT: Lbl 2: If X=A: Then X+α→X: A-α→A:
1 DT: IfEnd: Lbl 3: A→M: B→A: C→B: D→C: M→D: 1+Y→Y:
Y=4 => Goto 3: Y≦4 => Goto 2: E2 DT: Σx < 400 => Goto 1:
Fix 0: Rnd(A→A: Rnd(B→B: Rnd(C→C: Rnd(D→D: Norm 1:
Σx - 400◢ WhileEnd: π
程式二 (195 bytes,記錄次數版本)
程式需要在 REG Lin 模式下執行,因此在選擇新程式位置後,按 5 1 選用REG Lin模式。
注意: 藍色的英文字為統計模式中的變數(Σx 按 Shift 1 2,Σy 按 Shift 1 → 2),α是按SHIFT 7 → → 2,E 是按 EXP。
FreqOn: ; 0 DT: Fix 0: Rnd(9Ran#→A: Rnd(9Ran#→B:
Rnd(9Ran#→C: Rnd(9Ran#→D: Norm 1: While Ans - 40: Σy + 1:ClrStat:
; Ans DT: , 0 DT: Lbl 1: Rec( 0, 0: ?→X: α≧Abs(X-A => 9 DT:
Lbl 2: If X=A: Then X+α→X: A-α→A: 1 DT: IfEnd: Lbl 3:
A→M: B→A: C→B: D→C: M→D: 1+Y→Y:Y=4 => Goto 3:
Y≦4 => Goto 2: E2 DT: Σx < 400 => Goto 1: Fix 0:Rnd(A→A:
Rnd(B→B: Rnd(C→C: Rnd(D→D: Norm 1: Σx - 400◢
WhileEnd: Σy
用法示範 (假設答案是3650) :
按 Prog 1 再按 1 EXE 1 EXE 2 EXE 2 EXE (表示猜1122)
(顯示0,十位0代表有0個數字位置及數字同時正確,個位0代表有0個數字正確但位置錯誤)
再按 3 EXE 3 EXE 4 EXE 4 EXE (表示猜3344)
(顯示10,十位1代表有1個數字位置及數字同時正確,個位0代表有0個數字正確但位置錯誤)
再按 5 EXE 5 EXE 6 EXE 6 EXE (表示猜5566)
(顯示2,十位0代表有0個數字位置及數字同時正確,個位2代表有2個數字正確但位置錯誤)
...
(猜中時程式一顯示π,程式二會顯示次數)
註:
1. 如在中途離開,請在完成輸入一組數字後才離開,否則可能無法知道答案的正確次序。
2. 此式運行時間較長, 每個輸入數字需運算約0.9秒。
3. 此式也可用作不重複版, 只須在程式開頭加上Lbl 9: 及在第二行Norm 1: 後加入程式碼 (A - B)(A - C)(A - D)(B - C)(B - D)(C - D)=0 => Goto 9: 即可。
附錄程式原理:
(例如答案為3665, 猜6355, 顯示12)
1. 先檢定猜測中的第一個位(6),與3665中的第一個位(3)核對 (即X6 A3B6C6D5)
2. 然後把答案換位, 再次檢測 (即X6 A6B6C5D3 ; X6 A6B5C3D6 ; X6 A5B3C6D6)
3. 輸入猜測的第二個位(3), 與3665中的第二個位(6)核對 (即X3 A6B6C5D3)
4. 重複以上步驟, 直至全部驗證完成
5. 若檢驗出"數字正確但位置錯誤",則猜的數與答案數均會加上一個細數α (例如驗出 X6 A6B6C5D3 => X6+α A6-αB6C5D3, 猜的6變成 6+α,答案的6變成 6-α) ,這樣該數字就不會再被驗出"數字正確但位置錯誤"了。
6. 每次輸入數字時,與最先檢驗的數字,會另外檢驗"數字位置及數字同時正確" 無論本身有沒有加上α,也不受影響。
返回 CASIO fx-50FH 及 fx-50F PLUS 程式集