SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

棒倒し法迷路の速度比較

先の穴掘り法迷路に続いて、棒倒し法の迷路プログラムも作って、IchigoJam SとRの速度を比較してみました。
動画はこちら。

【IchigoJam】棒倒し法迷路の速度比較

f:id:shiro0922:20210130234731p:plain
IchigoJam Sで2秒ちょっと、Rだと0.4秒くらいで迷路が作れます。

プログラム

棒倒し法の迷路の作り方は以下のとおりです。

  • 迷路の外枠を描き、その枠内に1つおきに棒を立てる。
  • 乱数で上下左右を決めて、それぞれの棒をその方向へ倒して壁にする。ただし既に壁になっている所へは倒さない。
  • 1段目の棒は上下左右へ倒すが、2段目以降は上は無しで、下左右の3方向に倒す。(孤立した道や、複数の正解ルートを作らないように)
10 '*MAZE POLE
20 CLV:CLS:SRND TICK():CLT
30 LET [0],-1,0,1,0,0,1,0,-1
40 ?CHR$(1):COPY #901,#900,30
50 FOR J=1 TO 20 STEP 2
60 LC 0,J:?CHR$(1):LC 30,J:?CHR$(1)
70 FOR I=0 TO 15:?CHR$(1,0);:NEXT:?CHR$(1)
80 NEXT
90 LC 0,21:?CHR$(1):LC 30,21:?CHR$(1)
100 ?CHR$(1):COPY #BC1,#BC0,30
110 Y=2
120 FOR X=2 TO 28 STEP 2
130 D=RND(4):U=X+[D*2]:V=Y+[D*2+1]:IF SCR(U,V) CONT
140 LC U,V:?CHR$(1)
150 NEXT
160 FOR Y=4 TO 20 STEP 2
170 FOR X=2 TO 28 STEP 2
180 D=RND(3):U=X+[D*2]:V=Y+[D*2+1]:IF SCR(U,V) CONT
190 LC U,V:?CHR$(1)
200 NEXT
210 NEXT
220 WAIT 180
230 RUN

棒倒し法はプログラムが短くて動作も速いのですが、このプログラムの作り方では、正解の道が上側・右側に偏る傾向があります。
時々作る方向(棒を倒す順番)を変えるといいかもしれません。