Задать вопрос
@deathlorattor

Задача c курса stepik по python. В чем может быть ошибка?

Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку "end" (без кавычек)

Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1). У крайних символов соседний элемент находится с противоположной стороны матрицы.

В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.


Пример решения:

convert_to_int, input_matrix = [], []
while True:
    lst = [x for x in input().split()]                 # here we get strings
    if 'end' not in lst:
        convert_to_int = [int(item) for item in lst]   # here we convert it to integers
        input_matrix.append(convert_to_int)
        continue
    else:
        break

if not input_matrix:
    print(*input_matrix)
    quit()

N, M = len(input_matrix[0]), len(input_matrix)

out_matrix = []
for i, lst in enumerate(input_matrix):  # raw and list
    for j, value in enumerate(lst):  # column and value
        out_matrix.append(
            input_matrix[(i - 1) % M][j] + input_matrix[(i + 1) % M][j] + input_matrix[i][(j - 1) % N] +
            input_matrix[i][(j + 1) % N])

step = N
counter = 0
for index,val in enumerate(out_matrix):
    if index == len(out_matrix)-1:
        print(*out_matrix[counter:])
    elif index == N:
        print(*out_matrix[counter:index])
        counter += step
        N += step


программа (как мне кажется) корректно отрабатывает на локальной IDE согласно условиям задачи, но при проверке на сайте появляется ошибка
Failed test #4. Wrong answer


Преподаватель на курсе говорит, что проблема в

в не соответствии решения выставленным требованиям.
> на вход которой подаётся прямоугольная матрица


Есть мысль переделать программу так, чтобы output_матрица наполнялась к примеру нулями согласно значению переменных N и M, которые будут принимать их от размеров сторон input_матрицы, но видел решения у других и там такого не было хотя не факт, что оно прошло все проверки, но это никак не относится к замечанию выше и навряд ли поможет...

примеры input/output:

9 5 3
0 7 -1
-5 2 9
end
3 21 22
10 6 19
20 16 -1

Process finished with exit code 0


1
end
4

Process finished with exit code 0

1 2 3 4
5 6 7 8
end
16 16 20 20
16 16 20 20

Process finished with exit code 0

1 2
3 4
5 6
7 8
end
14 14
14 14
22 22
22 22

Process finished with exit code 0
  • Вопрос задан
  • 11864 просмотра
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
@NaName
пример решения это весь код? если да то всё ок. у него нет никаких аргументов на входе
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@eugenik
на вход которой подаётся…

подразумевает либо параметр в командной строке (sys.argv), либо тунель (sys.stdin)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы