задача:
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку "end" (без кавычек)
Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1). У крайних символов соседний элемент находится с противоположной стороны матрицы.
В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.
Sample Input 1:
9 5 3
0 7 -1
-5 2 9
end
Sample Output 1:
3 21 22
10 6 19
20 16 -1
Sample Input 2:
1
end
Sample Output 2:
4
Memory Limit: 256 MB
Time Limit: 5 seconds
мое решение:
a=''
b=[]
q=0
num=-1
while a!="end":
a=input()
for i in a.replace(' ',''):
if i=='-':
q+=1
continue
elif i=='e' or i=='n' or i=='d':
continue
else:
if q==1:
b.append(int(i)-int(i)*2)
q=0
else:
b.append(int(i))
num+=1
gor=num
vert=len(b)//gor
c=[[0 for k in range(vert)] for n in range(gor)]
h=0
for i in range(gor):
for j in range(vert):
c[i][j]=int(b[h])
h+=1
z=[[0 for k in range(vert)] for n in range(gor)]
for i in range(len(z)):
for j in range(len(z[0])):
if j==len(z[0])-1 and i!=len(z)-1:
z[i][j]=int(c[i-1][j])+int(c[i+1][j])+int(c[i][j-1])+int(c[i][0])
elif j!=len(z[0])-1 and i==len(z)-1:
z[i][j]=int(c[i-1][j])+int(c[0][j])+int(c[i][j-1])+int(c[i][j+1])
elif j==len(z[0])-1 and i==len(z)-1:
z[i][j]=int(c[i-1][j])+int(c[0][j])+int(c[i][j-1])+int(c[i][0])
else:
z[i][j]=int(c[i-1][j])+int(c[i+1][j])+int(c[i][j-1])+int(c[i][j+1])
s=0
for i in range(len(z)):
for j in z[int(i)]:
print(str(j)+' ',end='')
s+=1
if s==vert:
print('')
s=0
на мои проверки отвечает корректно. при проверке на курсах stepic.org выдает ошибку на 6ом тесте.