「スタック領域のオーバーフローです」と表示される。・・・何で?
一応ソースコードを。
;HSPで9パズルを解く ;初期状態(0は空白): ;120 ;345 ;678 ;→"120345678" ;314 ;207 ;658 ;→"314207658" ; size=3 lastanswer="120345678" #module #defcfunc solve str a,str b sdim tmp,9 sdim move,1024 dim num,size@*size@ board=a move=b if board!lastanswer@ { for k,0,size@*size@ num(k)=int(strmid(board,k,1)) next for k,0,size@*size@ if num(k)=0 { ;空白を上に if k>2 { w=num(k-3) num(k-3)=0 num(k)=w tmp="" for j,0,size@*size@ tmp+=str(num(j)) next move+="0" move=solve(tmp,move) w=num(k) num(k)=0 num(k-3)=w } ;空白を右に if k\3!2 { w=num(k+1) num(k+1)=0 num(k)=w tmp="" for j,0,size@*size@ tmp+=str(num(j)) next move+="1" move=solve(tmp,move) w=num(k) num(k)=0 num(k+1)=w } ;空白を下に if k<6 { w=num(k+3) num(k+3)=0 num(k)=w tmp="" for j,0,size@*size@ tmp+=str(num(j)) next move+="2" move=solve(tmp,move) w=num(k) num(k)=0 num(k+3)=w } ;空白を左に if k\3!0 { w=num(k-1) num(k-1)=0 num(k)=w tmp="" for j,0,size@*size@ tmp+=str(num(j)) next move+="3" move=solve(tmp,move) w=num(k) num(k)=0 num(k-1)=w } } next } return move #global sdim answer,1024 answer=solve("314207658","") mes answer stop