Всем привет.Занимаюсь на степике и застрял на решение одной задачки.Если сможете дайте подсказку для решения пожалуйста.Проблема возникает при получении индексов элемента с одинаковыми значениями. Например,если список ['1', '2', '2'] Возвращаемые индексы будут 0 1 1 ,а мне нужно 0 1 2 (
Условие:
Условие:
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку "end" (без кавычек)
Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1). У крайних символов соседний элемент находится с противоположной стороны матрицы.
В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.
Код:
b = []
b3 = []
b4 = []
x = 0
x2 = 0
while True:
a = [input().split()]
if 'end' in str(a):
break
b += a
for i in b:
for j in i:
# (i - 1, j) + (i + 1, j) + (i, j-1) + (i, j + 1)
#2 2 2 3 0 5
#8 -4 3 5 1 0
#Ошибка в этой формуле
x = (int(b[b.index(i) - 1][i.index(j)]) + int(b[b.index(i) - len(b) + 1][i.index(j)]) +
int(b[b.index(i)][i.index(j) - 1]) + int(b[b.index(i)][i.index(j) - len(i) + 1]))
b3 += [x]
if len(b3) % len(i) == 0:
b4 += [b3]
b3 = []
#if len(b) == len(b4):
#print('По длинне входящего и выходящего списков все ок')
b = b4
#print(b)
for i in range(len(b)): # for i in range(0,1)
for j in range(len(b[i])):
print(b[i][j], end = ' ')
print()
#print(s) #[3, 21, 22, 10, 6, 19, 20, 16, -1]
#print(int((b[-1][0])) + int((b[1][0])) + int((b[0][-1])) + int((b[0][1])))
#
# j
# 9 5 3
# i 0 7 -1
# -5 2 9
#(i - 1, j) + (i + 1, j) + (i, j-1) + (i, j + 1)
#3 21 22
#10 6 19
#20 16 -1
Последнее редактирование: