Problem:


爆弾の連鎖

縦 8、横 8 のマスからなる図1 のような平面があります。その平面上に、いくつかの爆弾が置かれています。図2 にその例を示します（● = 爆弾）。

	

               
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	

       	       
□□□●□□●□

	       
□□□□□●□□

	       
●□□□●□□●

	       
□□●□□□●□

	       
□●□□□□□□

	       
□□□□●□□□

	       
●□●□□□●□

	       
□●□●□□●□

	       
	

図1図2

爆弾が爆発すると、その爆弾の上下左右 3 マスに爆風の影響が及び、それらのマスに置かれている爆弾も連鎖的に爆発します。たとえば、図 3 に示す爆弾が爆発すると図 4 の■のマスに爆風の影響が及びます。

	

               
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	       
□□□●□□□□

	       
□□□□□□□□

	       
□□□□□□□□

	

  
□□□□□□□□

	       
□□□□□□□□

	       
□□□■□□□□

	       
□□□■□□□□

	       
□□□■□□□□

	       
■■■●■■■□

	       
□□□■□□□□

	       
□□□■□□□□

	       
	

図3図4

爆弾が置かれている状態と最初に爆発する爆弾の位置を読み込んで、最終的な平面の状態を出力するプログラムを作成してください。

Input

入力は以下の形式で与えられます。

n
（空行）
データセット 1
（空行）
データセット 2
..
..
データセット n

１行目にデータセットの数 n (n ≤ 20) が与えられます。続いて n 個のデータセットが与えられます。各データセットの直前に１つの空行が与えられます。各データセットは以下の形式で与えられます。

g1,1g2,1...g8,1
g1,2g2,2...g8,2
:
g1,8g2,8...g8,8
X
Y

最初の８行に、平面を表す８つの文字列が与えられます。各文字列は８文字からなる数列で、爆弾が置かれているマスを 1、置かれていないマスを 0 で表します。
続く２行で、最初に爆発する爆弾の X 座標と Y 座標が与えられます。左上、左下、右上、右下の座標が、それぞれ、(1, 1)、(1, 8)、(8, 1)、(8, 8) です。例えば、図 4 に示す爆弾が最初に爆発するとき、与えられる座標は (4, 6) です。

Output

各データセットについて以下のように出力して下さい。

爆発しないで残った爆弾のあるマスを 1、爆弾のないマスを 0 で表現することとします。平面の一行を数字 8 個からなる一行とし 8 行の文字列で最終的な平面の状態を出力してください。各データセットの先頭は、サンプル出力のように Data x: から出力しなければなりません。ここで、x はデータセットの番号です。

Sample Input

2

00010010
00000100
10001001
00100010
01000000
00001000
10100010
01010010
2
5

00010010
00000100
10001001
00100010
01000000
00001000
10100010
01010010
2
5

Output for the Sample Input

Data 1:
00000000
00000100
10001001
00100000
00000000
00001000
10100000
00000000
Data 2:
00000000
00000100
10001001
00100000
00000000
00001000
10100000
00000000



Sample input:
2

00010010
00000100
10001001
00100010
01000000
00001000
10100010
01010010
2
5

00010010
00000100
10001001
00100010
01000000
00001000
10100010
01010010
2
5


Sample output:
Data 1:
00000000
00000100
10001001
00100000
00000000
00001000
10100000
00000000
Data 2:
00000000
00000100
10001001
00100000
00000000
00001000
10100000
00000000

Submission status: Runtime Error

Solution code:
<?php
// ??????????????????????????????
function bomber($data, $x, $y){
	if($x > 0 && $y > 0 && $x < 9 && $y < 9 && $data[$y][$x] > 0){
		// ??????
		$data[$y][$x] = 0;

		// ?????????????????????????????????
		for($i = 1; $i <= 3; $i++){
			$data = bomber($data, $x-$i, $y);
			$data = bomber($data, $x+$i, $y);
			$data = bomber($data, $x, $y-$i);
			$data = bomber($data, $x, $y+$i);
		}

	}

	return $data;
}


// ????????????????????°??????
$count = intval(fgets(STDIN));


$dataset = array();	// ????????????????????¨???????????????
$total = 11 * $count;	// ???????????§??\?????????????¨???????????????????????????????????????????11??????????????????+8???+x??§?¨?+y??§?¨?
$now = 0;		// ?????????????????????????????????????¨??????¨

while($line = fgets(STDIN)){
	$line = trim($line);
	// ???????????????????????????????????????????¨????
	if($line == ""){
		$now++;
		$dataset[$now] = array();
		$col = 1;
	}else{
		if($col == 10){
			// y??§?¨?
			$dataset[$now]["y"] = intval($line);
		}else if($col == 9){
			// x??§?¨?
			$dataset[$now]["x"] = intval($line);
			$col++;
		}else{
			$dataset[$now][$col] = array();
			for($row = 1; $row <= 8; $row++){
				$dataset[$now][$col][$row] = intval(substr($line, $row-1, 1));
			
			}
			$col++;
		}
	}
	
	


	$total--;
	if($total < 1) break;
}


foreach($dataset as $key => $data){
	// ??????????????????????????????????????????
	$x = $data["x"]; 
	$y = $data["y"];
	
	// ??????????????????????¶????
	unset($data["x"]);
	unset($data["y"]);
	
	// ???????????????
	$data = bomber($data, $x, $y);
	
	echo "Data {$key}:\n";
	foreach($data as $row){
		echo implode($row)."\n";
	}

}

Submission status: Runtime Error

Solution code:
def e(x,y):
 A[y][x]='0'
 for dx,dy in[(i,0),(0,i)for i in range(-3,4)]:
  if 0<=x+dx<8 and 0<=y+dy<8 and A[y+dy][x+dx]=='1':e(x+dx,y+dy)

for i in range(int(input())):
 print(f'Data {i+1}:')
 input()
 A=[list(input())for _ in[0]*8]
 e(int(input())-1,int(input())-1)
 for r in A:print(*r,sep='')

Submission status: Runtime Error

Solution code:
def e(x,y):
 A[y][x]='0'
 for dx,dy in[(i,0),(0,i)for i in range(-3,4)if i]:
  if 0<=x+dx<8 and 0<=y+dy<8 and A[y+dy][x+dx]=='1':e(x+dx,y+dy)

for i in range(int(input())):
 print(f'Data {i+1}:')
 input()
 A=[list(input())for _ in[0]*8]
 e(int(input())-1,int(input())-1)
 for r in A:print(*r,sep='')

Submission status: Runtime Error

Solution code:
def e(x,y):
 A[y][x]='0'
 for t in range(-3,4):
  if 0<=x+dx<8 and A[y][x+dx]=='1':e(x+dx,y)
  if 0<=y+dy<8 and A[y+dy][x]=='1':e(x,y+dy)

for i in range(int(input())):
 print(f'Data {i+1}:')
 input()
 A=[list(input())for _ in[0]*8]
 e(int(input())-1,int(input())-1)
 for r in A:print(*r,sep='')

Submission status: Runtime Error

Solution code:
x=[0,0,0,0,0,0,1,2,3,-1,-2,-3]
y=[1,2,3,-1,-2,-3,0,0,0,0,0,0]

def dfs(ty,tx):
    if L[ty][tx]==1:
        L[ty][tx]=0
        for i,j in zip(x,y):
            dx,dy=tx+i,ty+j
            if 0<=dx<8 and 0<=dy<8:
                dfs(dy,dx)
    else:
        return

n=input()
for i in range(n):
    L=[map(int,raw_input()) for j in range(8)]
    ax,ay=input(),input()
    dfs(ay-1,ax-1)
    print "Data %d:"%(i+1)
    for j in range(8):
        print "".join(map(str,L[j]))

Submission status: Runtime Error

Solution code:
x=[0,0,0,0,0,0,1,2,3,-1,-2,-3]
y=[1,2,3,-1,-2,-3,0,0,0,0,0,0]

def dfs(ty,tx):
    if L[ty][tx]==1:
        L[ty][tx]=0
        for i,j in zip(x,y):
            dx,dy=tx+i,ty+j
            if 0<=dx<8 and 0<=dy<8:
                dfs(dy,dx)
    return

n=input()
for i in range(n):
    L=[map(int,raw_input()) for j in range(8)]
    ax,ay=input(),input()
    dfs(ay-1,ax-1)
    print "Data %d:"%(i+1)
    for j in range(8):
        print "".join(map(str,L[j]))

Submission status: Runtime Error

Solution code:
x=[0,0,0,0,0,0,1,2,3,-1,-2,-3]
y=[1,2,3,-1,-2,-3,0,0,0,0,0,0]

def dfs(ty,tx):
    if L[ty][tx]==1:
        L[ty][tx]=0
        for i,j in zip(x,y):
            dx,dy=tx+i,ty+j
            if 0<=dx<=7 and 0<=dy<=7:
                dfs(dy,dx)
    return

n=input()
for i in range(n):
    L=[map(int,raw_input()) for j in range(8)]
    ax,ay=input(),input()
    dfs(ay-1,ax-1)
    print "Data %d:"%(i+1)
    for j in range(8):
        print "".join(map(str,L[j]))

Submission status: Runtime Error

Solution code:
def bomb(field,x,y):
    rfield = field[:][:]
    rfield[y][x] = 0
    for i in range(-3,4):
        if 0 <= x+i <= 7:
            if rfield[y][x+i] == 1:
                rfield = bomb(rfield,x+i,y)
        if 0 <= y+i <= 7:
            if rfield[y+i][x] == 1:
                rfield = bomb(rfield,x,y+i)
    return rfield


n = int(raw_input())
for data in range(1,n+1):
    # read condition
    field = []
    for line in range(8):
        field.append(map(int, list(raw_input())))
    x = int(raw_input())-1
    y = int(raw_input())-1

    # bombing!
    field = bomb(field,x,y)

    # print result
    print "Data %d:"%(data)
    for i in range(8):
        print "".join(map(str, field[i]))

Submission status: Runtime Error

Solution code:
def bomb(field,x,y):
    rfield = field[:][:]
    rfield[y][x] = 0
    for i in range(-3,4):
        if 0 <= x+i <= 7:
            if rfield[y][x+i] == 1:
                rfield = bomb(rfield,x+i,y)
        if 0 <= y+i <= 7:
            if rfield[y+i][x] == 1:
                rfield = bomb(rfield,x,y+i)
    return rfield


n = int(raw_input())
for data in range(1,n+1):
    # read condition
    dammy = raw_input
    field = []
    for line in range(8):
        field.append(map(int, list(raw_input())))
    x = int(raw_input())-1
    y = int(raw_input())-1

    # bombing!
    field = bomb(field,x,y)

    # print result
    print "Data %d:"%(data)
    for i in range(8):
        print "".join(map(str, field[i]))

Submission status: WA: Presentation Error

Solution code:
def solve(data,p):
    L=[]
    if data[p[1]-1][p[0]-1]=="1":
        data[p[1]-1]=data[p[1]-1][:p[0]-1]+"0"+data[p[1]-1][p[0]:]
        L+=p
    else:
        return []
    bakuhu=[(p[0]-3,p[1]),(p[0]-2,p[1]),(p[0]-1,p[1]),(p[0]+1,p[1]),(p[0]+2,p[1]),(p[0]+3,p[1]),(p[0],p[1]-3),(p[0],p[1]-2),(p[0],p[1]-1),(p[0],p[1]+1),(p[0],p[1]+2),(p[0],p[1]+3)]
    for i in range(len(bakuhu)):
        if bakuhu[i][0]>0 and bakuhu[i][1] >0 and bakuhu[i][0] <9 and bakuhu[i][1] <9:
            L.extend(solve(data,bakuhu[i]))
    return L
    
while True:
    try:
        ndata=input()
        for i in range(ndata):
            raw_input()
            data=[]
            for j in range(8):
                data.append(raw_input())
            x=input()
            y=input()
            p=(x,y)
            L=solve(data,p)
            while len(L)!=0:
                x=L.pop(0)
                y=L.pop(0)
                data[y-1]=data[y-1][:x-1]+'0'+data[y-1][x:]
            print "Data"+str(i+1)+':'
            for i in range(len(data)):
                print data[i]
    except:
        break

Submission status: WA: Presentation Error

Solution code:
def chain(y, x):
	bomb[y][x] = "0"
	if bomb[y + 1][x] == "1" : chain(y + 1, x)
	if bomb[y + 2][x] == "1" : chain(y + 2, x)
	if bomb[y + 3][x] == "1" : chain(y + 3, x)
	if bomb[y - 1][x] == "1" : chain(y - 1, x)
	if bomb[y - 2][x] == "1" : chain(y - 2, x)
	if bomb[y - 3][x] == "1" : chain(y - 3, x)
	if bomb[y][x + 1] == "1" : chain(y, x + 1)
	if bomb[y][x + 2] == "1" : chain(y, x + 2)
	if bomb[y][x + 3] == "1" : chain(y, x + 3)
	if bomb[y][x - 1] == "1" : chain(y, x - 1)
	if bomb[y][x - 2] == "1" : chain(y, x - 2)
	if bomb[y][x - 3] == "1" : chain(y, x - 3)
	return

n = input()
for d in range(0, n):
	raw_input()
	bomb = []
	for _ in range(0, 3) : bomb.append(list("00000000000000"))
	for _ in range(0, 8) : bomb.append(list("000" + raw_input() + "000"))
	for _ in range(0, 3) : bomb.append(list("00000000000000"))
	
	x = input() + 2
	y = input() + 2
	
	chain(y, x)
	
	print "Data {}:".format(d + 1)
	for var in bomb[3:11]:
		for r in var[3:11]:
			print r,
		print