合24解答(II)
程式由網友SuperMANganese提供。
這個程式是網友參考3173137編寫的合24解答(I)程式改編而成,改善之處是可以嘗試所有可能性,包括第(I)版不能嘗試的情況(例如: a - (b+(c×d)) , a - (b×c+d) , ...等形式),由於本程式於可以嘗試所有可能性,因此程式顯示無解則表示真正無解(第(I)版的無解可能不是真正的無解),另一個之改善之處是找出一組解後,可以繼續嘗試找其它的解答,絕大多數情況下能找出所有解 。
答案形式為
( (AXB) Y C ) Z D ,其中A, B, C, D為數值,X, Y, Z為運算符號
,程式會先顯示XYZ的值,再顯示A, B, C, D出現的順序(以八位數整數表示,例如: 01020312即A=01, B=02, C=03, D=12)。X,
Y, Z使用數字1, 2, 3, 4表示+,
- , ×, ÷ ,5表示 - 但被減數及減數的位置要對調,6表示 ÷
但被除數及除數的位置要對調。若果出現負數XYZ答案的形式為(AXB)Y(CZD),詳情請看各例題。
網友提供程式日期: 2009年6月27日
程式需要在 SD 模式下執行,因此在選擇新程式位置後,按 4 選用SD模式。
注意: 藍色的英文字為統計模式中的變數( n 按 Shift 1 3 ),E 是按 EXP,h是按 Shift 7 → 2。
程式 (532 bytes)
?→A: ?→B: ?→C: ?→D: Fix 0: FreqOn: ; 0 DT: Goto 1: Lbl 0:
If n - 2Rnd( n÷2: Then C→M: D→C: M→D: Goto 1:IfEnd: B→M:
D→B: M→D: Lbl 1: 1→X: 1→Y: Lbl 3: A+B→M: X=2 => A-B+h→M:
X=3 => AB→M: X=4 => A÷B→M: Y=1 => M+C→M: Y=2 => M-C→M:
Y=3 => MC→M: Y=4=> M÷C→M: Y=5=> C-M→M: Y=6 => C÷M→M:
If Y-7: Then M+D=24 => Goto 7: M-D = 24 => 2 => Goto 7: MD=24 => 3 => Goto 7:
M=24D => 4 => Goto 7: D-M = 24 => 5 => Goto 7: D=24M => 6 => Goto 7:
Else -X→X: -1→Y:M+CD=24 => -3 => Goto 7: M+C÷D=24 => -4 => Goto 7:
-2→Y:M-CD=24 => -3 => Goto 7: M-C÷D=24 => -4 => Goto 7:
-3→Y:24=M(C+D => -1 => Goto 7: 24=M(C-D => -2 => Goto 7:
-4→Y:M=24(C+D => -1 => Goto 7: M=24(C-D => -2 => Goto 7:
1-X→X: 0→Y: IfEnd: Lbl 9: Y+1→Y: X - 5 => Goto 3: A→M: B→A:
C→B: D→C: M→D: ; 4-1 DT: n=6 => 137A-1n-1→M: Ans => MAn◢
n=Rnd( n => Goto 0: Goto 1: Lbl 7: Norm 1: E2X + E1Y + Ans ◢
E6A+ E4B +E2C +D◢ X<0 => 1-X→X: Ans => 0→Y: Fix 0: Goto 9
註1: 程式會不斷嘗試不同的可能性(最多4224種可能),所以計算時間可能會較長,另外若程式找不出解答, 最後會顯示137。
例題1: 若四個數值分別為1, 3, 7, 6,求這四個數值合24的解答。
按 Prog 1 再按 1 EXE 3 EXE 7 EXE
6 EXE (顯示353,代表運算符號順序為 ×, - , ×,要注意5要將答案中被減數及減數對調位置答案)
EXE (顯示1030706(即01030706),代表答數值的順序為1, 3, 7, 6)
所以最後答案為 (7 - (1×3) ) × 6 。
例題2: 若四個數值分別為6, 7, 8, 9,求這四個數值合24的解答。
按 Prog 1 再按 6 EXE 7 EXE 8 EXE
9 EXE (顯示 - 342,代表運算符號順序為 ×, ÷, -,負數代表是(A×B)÷(C-D) 的形式)
EXE (顯示6080907(即06080907),代表答數值的順序為6, 9, 8, 7)
所以最後答案為 (6×8)÷(9-7)
註2: 這個例題第(I)版程式無法求得解答。
例題3: 若四個數值分別為2, 5, 5, 10,求這四個數值合24的解答。
按 Prog 1 再按 2 EXE 5 EXE 5 EXE
10 EXE (顯示453,代表運算符號為 ÷, -, ×,要注意5要將答案中被減數及減數對調位置答案)
EXE (顯示1070306(即02100505),代表答數值的順序為2, 10, 5, 5)
所以最後答案為 (5 - (2 ÷10) ) × 5 。
註3: 這個例題第(I)版程式無法求得解答。
例題4: 若四個數值分別為5, 6, 7, 10,求這四個數值合24的解答。
按 Prog 1 再按 5 EXE 6 EXE 7 EXE
10 EXE (顯示137表示無解)
註4: 有關合24遊戲的解答,可以參考以下網址:
http://www.semple.edu.hk/mpn185/misc/math24/worksheet/main/worksheet.pdf