箱入り娘をプログラムで解く
箱入り娘をプログラムで解く 山中和義 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
新規発言を反映させるにはブラウザの更新ボタンを押してください。