Pagini recente » Cod sursa (job #2578208) | Cod sursa (job #2325730) | Cod sursa (job #2665233) | Cod sursa (job #2621931) | Cod sursa (job #2782267)
import sys
import re
director=sys.argv[1] if len(sys.argv)>1 else "rj.in"
director2=sys.argv[2] if len(sys.argv)>1 else "rj.out"
a=[]
with open(director, "r") as f:
mc = f.readline().rstrip('\n')
mc = re.split('\W+', mc)
n = int(mc[0])
mm = int(mc[1])
m = n
while m:
l = []
mc = f.readline().rstrip('\n')
for i in mc:
if i == 'X':
l.append(-1)
elif i == ' ':
l.append(0)
elif i == 'R':
rx = n - m + 1
ry = len(l) + 1
l.append(0)
elif i == 'J':
jx = n - m + 1
jy = len(l) + 1
l.append(0)
a.append(l)
m -= 1
dx = [-1, 1, 1, -1, 0, 1, 0, -1]
dy = [-1, -1, 1, 1, -1, 0, 1, 0]
x = []
y = []
mi = 99999
a[rx - 1][ry - 1] = 1
x.append(rx)
y.append(ry)
def bf_lee():
global mi
p = u = 1
while p <= u:
i = x[p - 1]
j = y[p - 1]
ok = 0
for k in range(8):
ii = i + dx[k]
jj = j + dy[k]
if ii > 0 and ii <= n and jj > 0 and jj <= mm and a[ii - 1][jj - 1] == 0:
ok = 1
u += 1
x.append(ii)
y.append(jj)
a[ii - 1][jj - 1] = a[i - 1][j - 1] + 1
if ii == jx and jj == jy:
if a[ii - 1][jj - 1] > 0 and a[ii - 1][jj - 1] < mi:
mi = a[ii - 1][jj - 1]
return 0
p += 1
bf_lee()
fin = list()
finn = list()
def traseu(i,j):
global fin,finn
if i == rx and j == ry:
fin.reverse()
finn=fin.copy()
return 1
else:
if i-1 >0 and a[i-2][j-1] == a[i-1][j-1]-1:
tt = i-1, j
fin.append(tt)
traseu(i-1,j)
fin.pop()
elif j-1 > 0 and a[i-1][j-2] == a[i-1][j-1]-1:
tt = i , j - 1
fin.append(tt)
traseu(i,j-1)
fin.pop()
elif i < n and a[i][j-1] == a[i-1][j-1]-1:
tt = i + 1, j
fin.append(tt)
traseu(i+1,j)
fin.pop()
elif j<mm and a[i-1][j] == a[i-1][j-1]-1:
tt = i , j + 1
fin.append(tt)
traseu(i,j+1)
fin.pop()
elif i-1 >0 and j<mm and a[i-2][j] == a[i-1][j-1]-1:
tt = i - 1, j + 1
fin.append(tt)
traseu(i-1,j+1)
fin.pop()
elif i-1 >0 and j-1 > 0 and a[i-2][j-2] == a[i-1][j-1]-1:
tt = i - 1, j - 1
fin.append(tt)
traseu(i-1,j-1)
fin.pop()
elif i <n and j<mm and a[i][j] == a[i-1][j-1]-1:
tt = i + 1, j + 1
fin.append(tt)
traseu(i+1,j+1)
fin.pop()
elif i < n and j-1 > 0 and a[i][j-2] == a[i-1][j-1]-1:
tt = i + 1, j - 1
fin.append(tt)
traseu(i+1,j-1)
fin.pop()
else:
print("Nu exista")
return 0
traseu(jx,jy)
tt=jx, jy
finn.append(tt)
with open(director2, "w") as g:
if len(finn) % 2 != 0:
k1 = (len(finn) // 2) + 1
k2 = finn[k1 - 1][0]
k3 = finn[k1 - 1][1]
g.write(str(k1) + " " + str(k2) + " " + str(k3))
else:
k1 = (len(finn) // 2)
k2 = finn[k1 -1 ][0]
k3 = finn[k1 -1 ][1]
g.write(str(k1) + " " + str(k2) + " " + str(k3))