程式需要在 REG Lin 模式下執行,因此在選擇新程式位置後,按 5 1 選用REG Lin模式。
注意: 藍色的英文字為統計模式中的變數(
Σx
按 Shift 1 2,
Σy
按 Shift 1 → 2,
n
按 Shift 1 3,
minX
按 Shift 2 2 1),
E
是按 EXP。
FreqOn: Rad:
;
8
DT
: 1→C: 4→D:
For 1→X To 9 Step 2:
1111X+11cos( πX◢ ?→A: ?→B: D-A-B→D:
A+B=0
=>
0, 0
;
X-
n
-1
DT
: A+B=0
=>
Goto 1:
If A+B>C: Then A+B→C:
X+(A<B) cos( πX:
Ans , Ans+cos( πAns)(1≧Abs(A-B
DT
:
Else CD=1
=>
Y, M
DT
: Y→M: X+(A≦B) cos( πX→Y:
A+B=2
=>
X+(A<B)cos(πX→M:IfEnd:
Lbl 1: D≦0
=>
Break:Next:
- (
Σx
≠
Σy
;
0
DT
: C=1
=>
0, 0
;
Σy
-
n
DT
:
11
E
2
Σx
+11n◢
?→A: ?→B:A+B+1→X:
Σy
=
Σx
+cos( π
Σx
=>
A-B+2→X:
Ans
=>
0,
Σx
-
Σy
DT
:
cos( π
Σx
)(A=0, cos( π
Σy
)(B=0)(A≠2
DT
:
X=1
=>
Σy
-
Σx
,
Σx
-
Σy
DT
:
If C+D≧3: Then
Σx
→M:
D
=>
Σx
+cos(π
Σx
→M:
C+D≧4
=>
Σx
+cos( π
Σx
)(C+2
minX
≦2→Y:
IfEnd:
If X≧2: Then M+cos( πM→A:
Σx
→M: A-
Σx
, 0
DT
: IfEnd:
If X≧3: Then Y+cos(πY→A:
Σy
→Y:0,A-
Σy
DT
:IfEnd:
While 1:
E
3Y+
E
2M+
E
1
Σx
+
Σy
◢ ?→A: ?→B:
If A+B<4: Then
Y+cos( πY→A: cos( π
Σx
DT
:
Σx
→Y: A-
Σx
DT
: 2B→B: IfEnd:
B≧2
=>
Σy
-
Σx
,
Σx
-
Σy
DT
:
If (
Σx
=
Σy
)+(B=4: Then M→A:Y→M:
A→Y:IfEnd:WhileEnd
用法示範 (假設答案是0137) :
按 Prog 1 (顯示1100,表示要猜1100)
1 EXE (表示1個數字及位置對) 1 EXE (表示1個數字對但位置錯)
(顯示3322,表示要猜3322)
0 EXE (表示0個數字及位置對) 1 EXE (表示1個數字對但位置錯)
(顯示5544) 0 EXE 0 EXE
(顯示7766) 0 EXE 1 EXE
(顯示1144) 1 EXE 0 EXE
(顯示0137) (即答案是0137)
註1: 此程式若在不重複版使用,請注意有些mastermind程式(例如mastermind(I))不能正確判斷重複的情況,請在第二行及第八行的
?→B:後加上程式碼 .5(B-A→B: 即可使用。
註2: 請留意程式執行後會變成Rad模式,按 Shift MODE 1 可返回Deg模式。若果 不想這樣的話, 可刪去第一行的 Rad:
並在每一個π後加上細 r (按shift Ans 2))。
註3: 理論上程式可在九步內得解答,當然這不一定是最快的解法,但基於計數機的限制,故採用這個有系統的解法。