3×3マップ平均歩数計算 2013-04-11 18:58 a
★0★ 713 pv
10万回実験した結果
平均:25.02157歩
20歩以下の回数:41189回(41.2%)
どうやら平均は25歩に収束するみたい?
ということは数学的に解決できるのか?
以下俺用メモ
配列は1から順に現在地XY階段XY目的地XY
Nはカウンター
XはA(X)代入簡略化用
Yは階段発見チェックフラグ
Wは一番近い未探索画面チェックフラグ
Kはループ脱出用フラグ
(サブルーチン中からメインへGOTOで飛べないらしい)
STEPは現在までの歩数
SSはSTEPの合計
Pが20歩以下カウント用
思いつくままに記述してるので、かなり無駄は多い。
(サブルーチンからNEXT Nへ飛べないので、途中で終わっても、結局最後までメインをすすむとか)
RANDOMIZE
DIM A(1 to 6)
FOR N=1 to 100000
FOR X=1 to 4
A(X)=INT(RND*29)+1
NEXT X
STEP=0
K=0
GOSUB 3
FOR X=1 to 2
IF A(X)<15 then
A(X+4)=10
ELSE
A(X+4)=20
END IF
NEXT X
IF ABS(A(1)-A(5))<ABS(A(2)-A(6)) then
STEP=STEP+ABS(A(1)-A(5))
A(1)=A(5)
W=0
ELSE
STEP=STEP+ABS(A(2)-A(6))
A(2)=A(6)
W=1
END IF
GOSUB 3
IF W=1 then
STEP=STEP+ABS(A(1)-A(5))
A(1)=A(5)
ELSE
STEP=STEP+ABS(A(2)-A(6))
A(2)=A(6)
END IF
GOSUB 3
A(1)=30-A(1)
STEP=STEP+10
GOSUB 3
A(2)=30-A(2)
STEP=STEP+10
GOSUB 3
A(1)=30-A(1)
STEP=STEP+10
GOSUB 3
NEXT N
PRINT SS/(N-1)
PRINT P
STOP
3
Y=0
FOR X=1 to 2
IF A(X)<11 then
IF A(X+2)<11 then
Y=Y+1
GOTO 2
END IF
END IF
IF A(X)>19 then
IF A(X+2)>19 then
Y=Y+1
GOTO 2
END IF
END IF
IF A(X)>9 AND A(X)<21 then
IF A(X+2)>9 AND A(X+2)<21 then
Y=Y+1
GOTO 2
END IF
END IF
2
NEXT X
IF Y=2 AND K=0 then
K=1
STEP=STEP+ABS(A(1)-A(3))+ABS(A(2)-A(4))
SS=SS+STEP
IF STEP<21 then LET P=P+1
END IF
RETURN
END