Всем привет.Занимаюсь на степике и застрял на решение одной задачки.Если сможете дайте подсказку для решения пожалуйста.Проблема возникает при получении индексов элемента с одинаковыми значениями. Например,если список ['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
	
			
				Последнее редактирование: