新しく発言する  EXIT  インデックスへ

箱入り娘をプログラムで解く


  箱入り娘をプログラムで解く 山中和義 2008/06/15 19:17:14 
  つづき 山中和義 2008/06/15 19:18:29 
   └つづき 山中和義 2008/06/15 19:21:16 
Re: つづき  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/06/15 19:21:16
つづき

CASE 2 !1x2(横長)
IF col<>3 THEN !右端以外なら、右
IF b$(k+2:k+2)="0" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k+2:k+2)=b$(k:k)
LET x$(xn)(k:k)="0"
END IF
END IF
IF row>0 THEN !上端以外なら、上
IF b$(k-N:k+1-N)="00" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k-N:k+1-N)=b$(k:k+1)
LET x$(xn)(k:k+1)="00"
END IF
END IF
IF col<>1 THEN !左端以外なら、左
IF b$(k-1:k-1)="0" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k-1:k-1)=b$(k:k)
LET x$(xn)(k+1:k+1)="0"
END IF
END IF
IF row<M-1 THEN !下端以外なら、下
IF b$(k+N:k+1+N)="00" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k+N:k+1+N)=b$(k:k+1)
LET x$(xn)(k:k+1)="00"
END IF
END IF

CASE 3 !2x1(縦長)
IF col<>0 THEN !右端以外なら、右
IF b$(k+1:k+1)="0" AND b$(k+1+N:k+1+N)="0" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k+1:k+1)=b$(k:k)
LET x$(xn)(k+1+N:k+1+N)=b$(k:k)
LET x$(xn)(k:k)="0"
LET x$(xn)(k+N:k+N)="0"
END IF
END IF
IF row>0 THEN !上端以外なら、上
IF b$(k-N:k-N)="0" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k-N:k-N)=b$(k:k)
LET x$(xn)(k+N:k+N)="0"
END IF
END IF
IF col<>1 THEN !左端以外なら、左
IF b$(k-1:k-1)="0" AND b$(k-1+N:k-1+N)="0" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k-1:k-1)=b$(k:k)
LET x$(xn)(k-1+N:k-1+N)=b$(k:k)
LET x$(xn)(k:k)="0"
LET x$(xn)(k+N:k+N)="0"
END IF
END IF
IF row<M-2 THEN !下端以外なら、下
IF b$(k+2*N:k+2*N)="0" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k+2*N:k+2*N)=b$(k:k)
LET x$(xn)(k:k)="0"
END IF
END IF

CASE 4 !2x2(娘)
IF col<>3 THEN !右端以外なら、右
IF b$(k+2:k+2)="0" AND b$(k+2+N:k+2+N)="0" THEN
LET xn=xn+1
LET x$(xn)=b$
LET x$(xn)(k+2:k+2)=b$(k:k)
LET x$(xn)(k+2+N:k+2+N)=b$(k:k)
LET x$(xn)(k:k)="0"
LET x$(xn)(k+N:k+N)="0"
END IF
END IF

    └つづき 山中和義 2008/06/15 19:21:54 

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。