555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
1

Вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы

28.11.2014, 17:12. Показов 33424. Ответов 21
Метки нет (Все метки)

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

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

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

Sample Input 1:Sample Input 2:
9 5 31
0 7 -1end
-5 2 9 
end 
Sample Output 1:Sample Output 2:
3 21 224
10 6 19 
20 16 -1 

Memory Limit: 256 MB
Time Limit: 5 seconds

P.S. Нужно только решение. Разжёвывать само решение не нужно. Заранее спасибо.
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2014, 17:12
Ответы с готовыми решениями:

Вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности...

Программа должна вывести матрицу, у которой каждый элемент в позиции I,j равен произведению элементов первой матрицы
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк,...

Массив: Вывести матрицу, у которой каждый элемент равен сумме элементов матрицы на заданных позициях...
Всем еще раз добрый день. Есть задача: Напишите программу, на вход которой подаётся...

Получить матрицу X(M,M), каждый элемент которой равен сумме соответствующих элементов матриц А и B
Заданы матрицы А(м,м) и В(м,м). Получить матрицу X(M,M), каждый элемент которой равен сумме...

Определить квадратную матрицу, каждый элемент которой равен сумме элементов соответствующей строки
Добрый день! Пожалуйста, помогите с программой. В функции Input Вводится массив с клавиатуры, а...

21
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 17:22  [ТС] 2
Подскажите, пожалуйста, как можно считать матрицу в массив через пробелы и через переходы на новую строку, пока не встретится строка "end".
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
30.11.2014, 17:46 3
Лучший ответ Сообщение было отмечено Dennis Ritchie как решение

Решение

Вот для тебя отправная точка, создание многомерного списка, дальше давай сам:
Python
1
2
3
4
5
6
7
8
9
data = []
while True:
    inp = input('Введите строку числа разделённые пробелом: ')
    if inp == 'end':
        break
    data.append(inp.split())
 
for i in data:
    print(i)
3
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 20:22  [ТС] 4
Спасибо за отправную точку. А как сделать, чтобы печатать этот многомерный список в таком виде, в котором я его вводил, т. е. как матрицу. И как сделать, чтобы индексы за пределы не выходили:
Python
1
2
3
4
5
6
7
8
9
10
data = []
while True:
    inp = input(u'Введите в строку числа разделённые пробелом: ')
    if inp == 'end':
        break
    data.append(inp.split())
 
for i in range(0, len(data)):
    for j in range(0, len(data)):
        print(data[i - 1][j] + data[i + 1][j] + data[i][j - 1] + data[i][j + 1], end = ' ')
Добавлено через 1 час 4 минуты
tsar925, ну вот я научился правильно печатать матрицу по строкам:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
data = []
while True:
    inp = input(u'Введите в строку числа разделённые пробелом: ')
    if inp == 'end':
        break
    data.append(inp.split())
 
for i in range(0, len(data)):
    for j in range(0, len(data)):
        if j == len(data) - 1:
            k = '\n'
        print(data[i][j], end = k)
        k = ' '
А как избавиться от выхода индексов за пределы списка:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
data = []
while True:
    inp = input(u'Введите в строку числа разделённые пробелом: ')
    if inp == 'end':
        break
    data.append(inp.split())
 
for i in range(0, len(data)):
    for j in range(0, len(data)):
        if j == len(data) - 1:
            k = '\n'
        print(data[i - 1][j] + data[i + 1][j] + data[i][j - 1] + data[i][j + 1], end = k)
        k = ' '
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
30.11.2014, 20:43 5
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
ну вот я научился правильно печатать матрицу по строкам:
По строкам это она у меня печаталась, а у тебя она тупо в строку печатается, как матрица вектор.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А как избавиться от выхода индексов за пределы списка:
Задавай количество строк и столбцов и делай два цикла, один обходит столбцы другой строки и в этих циклах у тебя будет происходить ввод.
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 20:50  [ТС] 6
Цитата Сообщение от tsar925 Посмотреть сообщение
По строкам это она у меня печаталась, а у тебя она тупо в строку печатается, как матрица вектор.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
data = []
while True:
    inp = input(u'Введите в строку числа разделённые пробелом: ')
    if inp == 'end':
        break
    data.append(inp.split())
 
k = ' '
for i in range(0, len(data)):
    for j in range(0, len(data)):
        if j == len(data) - 1:
            k = '\n'
        print(data[i][j], end = k)
        k = ' '
Теперь нормально печатается. Я забыл написать начальное значение символа k:
Python
1
k = ' '
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
30.11.2014, 20:56 7
Ну первая версия печатала все в строку. Если тебе уж так мешают скобки, то вот вариант как них избавиться по культурному.
Python
1
2
3
4
5
6
7
8
9
data = []
while True:
    inp = input(u'Введите в строку числа разделённые пробелом: ')
    if inp == 'end':
        break
    data.append(inp.split())
 
for i in data:
    print(' '.join(i))
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 22:50  [ТС] 8
Цитата Сообщение от tsar925 Посмотреть сообщение
Если тебе уж так мешают скобки, то вот вариант как от них избавиться по-культурному.
Да, можно и так. Я просто забыл про это.
Сейчас пытаюсь реализовать правильную смену крайних элементов.

Добавлено через 26 минут
Посчитал наконец-то первое число из матрицы :
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
data = []
while True:
    inp = input(u'Введите в строку числа разделённые пробелом: ')
    if inp == 'end':
        break
    data.append(inp.split())
 
k = ' '
for i in range(0, len(data)):
    for j in range(0, len(data)):
        if j == len(data) - 1:
            k = '\n'
        if i == 0 and j == 0:
            print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][len(data) - 1]) + int(data[len(data) - 1][j]))
        k = ' '
Добавлено через 1 час 2 минуты
tsar925, ну вот я решил задачу полностью. Теперь её нужно сдать в тестирующую систему. Сдал я её, а программа валится на третьем тесте. Система пишет, что неправильный ответ. Не могу понять, где я ошибся.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
data = []
while True:
    inp = input()
    if inp == 'end':
        break
    data.append(inp.split())
 
k = ' '
if len(data) == 1:
    print(int(data[0][0]) * 4)
else:
    for i in range(0, len(data)):
        for j in range(0, len(data)):
            if j == len(data) - 1:
                k = '\n'
            if i == 0 and j == 0:
                print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][len(data) - 1]) + int(data[len(data) - 1][j]), end = k)
            elif i == 0 and j == len(data) - 1:
                print(int(data[i][j - 1]) + int(data[i + 1][j]) + int(data[i][0]) + int(data[len(data) - 1][j]), end = k)
            elif i == len(data) - 1 and j == 0:
                print(int(data[i][j + 1]) + int(data[i - 1][j]) + int(data[i][len(data) - 1]) + int(data[0][j]), end = k)
            elif i != 0 and j == 0:
                print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][len(data) - 1]) + int(data[i - 1][j]), end = k)
            elif i == 0 and j != 0:
                print(int(data[i][j - 1]) + int(data[i + 1][j]) + int(data[i][j + 1]) + int(data[len(data) - 1][j]), end = k)
            elif i == len(data) - 1 and j == len(data) - 1:
                print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][0]) + int(data[0][j]), end = k)
            elif i != 0 and j == len(data) - 1:
                print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][0]) + int(data[i + 1][j]), end = k)
            elif i == len(data) - 1 and j != 0:
                print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][j + 1]) + int(data[0][j]), end = k)
            else:
                print(int(data[i - 1][j]) + int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][j - 1]), end = k)
            k = ' '
Добавлено через 13 минут
Я понял, где я ошибся.
Напишите программу, на вход которой подаётся прямоугольная матрица...
Моя программа правильно работает только для квадратной матрицы. Чтобы программа корректно работала и для прямоугольной матрицы, нужно узнать количество столбцов в матрице и поставить это количество во второй цикл for вместо len(data).
len(data) - количество строк в матрице. А как узнать количество столбцов?
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
30.11.2014, 22:58 9
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
data = []
while True:
* * inp = input()
* * if inp == 'end':
* * * * break
* * data.append(inp.split())
k = ' '
if len(data) == 1:
* * print(int(data[0][0]) * 4)
else:
* * for i in range(0, len(data)):
* * * * for j in range(0, len(data)):
* * * * * * if j == len(data) - 1:
* * * * * * * * k = '\n'
* * * * * * if i == 0 and j == 0:
* * * * * * * * print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][len(data) - 1]) + int(data[len(data) - 1][j]), end = k)
* * * * * * elif i == 0 and j == len(data) - 1:
* * * * * * * * print(int(data[i][j - 1]) + int(data[i + 1][j]) + int(data[i][0]) + int(data[len(data) - 1][j]), end = k)
* * * * * * elif i == len(data) - 1 and j == 0:
* * * * * * * * print(int(data[i][j + 1]) + int(data[i - 1][j]) + int(data[i][len(data) - 1]) + int(data[0][j]), end = k)
* * * * * * elif i != 0 and j == 0:
* * * * * * * * print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][len(data) - 1]) + int(data[i - 1][j]), end = k)
* * * * * * elif i == 0 and j != 0:
* * * * * * * * print(int(data[i][j - 1]) + int(data[i + 1][j]) + int(data[i][j + 1]) + int(data[len(data) - 1][j]), end = k)
* * * * * * elif i == len(data) - 1 and j == len(data) - 1:
* * * * * * * * print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][0]) + int(data[0][j]), end = k)
* * * * * * elif i != 0 and j == len(data) - 1:
* * * * * * * * print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][0]) + int(data[i + 1][j]), end = k)
* * * * * * elif i == len(data) - 1 and j != 0:
* * * * * * * * print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][j + 1]) + int(data[0][j]), end = k)
* * * * * * else:
* * * * * * * * print(int(data[i - 1][j]) + int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][j - 1]), end = k)
* * * * * * k = ' '
Ух тыж ёжики зеленые, лучше я бы это не видел теперь спать спокойно не смогу... Ужасы сниться будут.

Добавлено через 44 секунды
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А как узнать количество столбцов?
По логике это количество элементов в одной строке
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 23:06  [ТС] 10
Цитата Сообщение от tsar925 Посмотреть сообщение
По логике это количество элементов в одной строке
Да, это и так понятно. А как узнать, сколько я ввёл элементов в одной строке?
Цитата Сообщение от tsar925 Посмотреть сообщение
Ух тыж ёжики зеленые, лучше я бы это не видел теперь спать спокойно не смогу... Ужасы сниться будут.
Страшно? Это код C++ программиста, записанный на Python'e.
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
30.11.2014, 23:27 11
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Да, это и так понятно. А как узнать, сколько я ввёл элементов в одной строке?
Разрезать строку с помощью split и посчитать количество элементов.
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Страшно?
Если честно, то ооочень
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 23:28  [ТС] 12
Цитата Сообщение от tsar925 Посмотреть сообщение
Разрезать строку с помощью split и посчитать количество элементов.
Как это сделать?
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
30.11.2014, 23:28 13
len(inp.strip().split())
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
01.12.2014, 00:08  [ТС] 14
Цитата Сообщение от tsar925 Посмотреть сообщение
len(inp.strip().split())
Хорошо. А в какую часть кода мне вставить эту строку?
Python
1
2
3
4
5
6
data = []
while True:
    inp = input()
    if inp == 'end':
        break
    data.append(inp.split())
Добавлено через 34 минуты
tsar925, так как же применить эту функцию к списку data? И как потом сохранить количество столбцов в переменную? Не понимаю.
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
01.12.2014, 00:30 15
Python
1
2
3
4
5
6
7
8
9
10
data = []
while True:
    inp = input('Введите: ')
    if inp == 'end':
        if len(data[0]) == len(data):
            print('Вы ввели квадратную матрицу, а нужна прямоугольная')
            continue
        else:
            break
    data.append(inp.split())
Можно так
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
01.12.2014, 00:40  [ТС] 16
Цитата Сообщение от tsar925 Посмотреть сообщение
Можно так
Нет, так не пойдёт. Ведь система может ввести как квадратную матрицу, так и прямоугольную.
Что ли вообще нельзя никак сосчитать количество столбцов?
0
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
01.12.2014, 00:47 17
Просто посчитать количество столбцов я уже сказал как

Добавлено через 1 минуту
Python
1
len(data[0].split())
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
01.12.2014, 02:30  [ТС] 18
Цитата Сообщение от tsar925 Посмотреть сообщение
Просто посчитать количество столбцов я уже сказал как
Python
1
len(data[0].split())
Так куда вставить этот кусок кода? И что эта строка делает? Её нужно в цикл засунуть или просто присвоить переменной?

Добавлено через 1 час 35 минут
Решил задачу полностью, но всё равно почему-то система выдаёт ошибку на третьем тесте:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
data = []
while True:
    inp = input()
    if inp == 'end':
        break
    data.append(inp.split())
 
p = len(data[0])
k = ' '
if len(data) == 1:
    print(int(data[0][0]) * 4)
else:
    for i in range(0, len(data)):
        for j in range(0, p):
            if j == p - 1:
                k = '\n'
            if i == 0 and j == 0:
                print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][p - 1]) + int(data[len(data) - 1][j]), end = k)
            elif i == 0 and j == p - 1:
                print(int(data[i][j - 1]) + int(data[i + 1][j]) + int(data[i][0]) + int(data[len(data) - 1][j]), end = k)
            elif i == len(data) - 1 and j == 0:
                print(int(data[i][j + 1]) + int(data[i - 1][j]) + int(data[i][p - 1]) + int(data[0][j]), end = k)
            elif i != 0 and j == 0:
                print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][p - 1]) + int(data[i - 1][j]), end = k)
            elif i == 0 and j != 0:
                print(int(data[i][j - 1]) + int(data[i + 1][j]) + int(data[i][j + 1]) + int(data[len(data) - 1][j]), end = k)
            elif i == len(data) - 1 and j == p - 1:
                print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][0]) + int(data[0][j]), end = k)
            elif i != 0 and j == p - 1:
                print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][0]) + int(data[i + 1][j]), end = k)
            elif i == len(data) - 1 and j != 0:
                print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][j + 1]) + int(data[0][j]), end = k)
            else:
                print(int(data[i - 1][j]) + int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][j - 1]), end = k)
            k = ' '
Нашёл в интернете другое решение, которое полностью работает:
Python
1
2
3
4
5
6
7
string = m = []
while string != 'end':
    string = input()
    m.append(list(map(int, string.split(' ')))) if string != 'end' else None
li, lj = len(m), len(m[0])
new = [[sum([m[i-1][j], m[(i+1)%li][j], m[i][j-1], m[i][(j+1)%lj]]) for j in range(lj)] for i in range(li)]
[print(' '.join(map(str, row))) for row in new]
Не понимаю, где я допустил ошибку в своём решении.
0
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
01.12.2014, 06:01  [ТС] 19
:black_eye.: Наконец-то я затолкал это решение в тестирующую систему:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
data = []
while True:
    inp = input()
    if inp == 'end':
        break
    data.append(inp.split())
 
p = len(data[0])
k = ' '
if len(data) == 1 and p == 1:
    print(int(data[0][0]) * 4)
else:
    for i in range(0, len(data)):
        for j in range(0, p):
            if j == p - 1:
                k = '\n'
            if len(data) == 1 and p == 2:
                print(int(data[0][0]) + int(data[0][0]) + int(data[0][1]) + int(data[0][1]), end = k)
            elif len(data) == 2 and p == 1:
                print(int(data[0][0]) + int(data[0][0]) + int(data[1][0]) + int(data[1][0]), end = k)
            elif len(data) == 1 and p != 1:
                if j == 0:
                    print(int(data[i][j + 1]) + int(data[i][p - 1]) + int(data[0][j]) + int(data[0][j]), end = k)
                elif j == p - 1:
                    print(int(data[i][j - 1]) + int(data[i][0]) + int(data[i][p - 1]) + int(data[i][p - 1]), end = k)
                else:
                    print(int(data[i][j - 1]) + int(data[i][j + 1]) + int(data[i][j]) + int(data[i][j]), end = k)
            elif len(data) != 1 and p == 1:
                if i == 0:
                    print(int(data[i + 1][j]) + int(data[i][j]) + int(data[i][j]) + int(data[len(data) - 1][j]), end = k)
                elif i == len(data) - 1:
                    print(int(data[i][j]) + int(data[i][j]) + int(data[0][j]) + int(data[i - 1][j]), end = k)
                else:
                    print(int(data[i][j]) + int(data[i][j]) + int(data[i - 1][j]) + int(data[i + 1][j]), end = k)
            else:
                if j == p - 1:
                    k = '\n'
                if i == 0 and j == 0:
                    print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][p - 1]) + int(data[len(data) - 1][j]), end = k)
                elif i == 0 and j == p - 1:
                    print(int(data[i][j - 1]) + int(data[i + 1][j]) + int(data[i][0]) + int(data[len(data) - 1][j]), end = k)
                elif i == len(data) - 1 and j == 0:
                    print(int(data[i][j + 1]) + int(data[i - 1][j]) + int(data[i][p - 1]) + int(data[0][j]), end = k)
                elif i != 0 and j == 0:
                    print(int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][p - 1]) + int(data[i - 1][j]), end = k)
                elif i == 0 and j != 0:
                    print(int(data[i][j - 1]) + int(data[i + 1][j]) + int(data[i][j + 1]) + int(data[len(data) - 1][j]), end = k)
                elif i == len(data) - 1 and j == p - 1:
                    print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][0]) + int(data[0][j]), end = k)
                elif i != 0 and j == p - 1:
                    print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][0]) + int(data[i + 1][j]), end = k)
                elif i == len(data) - 1 and j != 0:
                    print(int(data[i][j - 1]) + int(data[i - 1][j]) + int(data[i][j + 1]) + int(data[0][j]), end = k)
                else:
                    print(int(data[i - 1][j]) + int(data[i][j + 1]) + int(data[i + 1][j]) + int(data[i][j - 1]), end = k)
        k = ' '
Просто я забыл рассмотреть четыре частных случая, когда строка или столбец могли равняться единице:

Вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы
1
8 / 10 / 5
Регистрация: 06.06.2013
Сообщений: 107
16.12.2016, 20:01 20
Здравствуйте, прошу помощи с решением этой задачи.

Искал инфу, как ввести матрицу и попал сюда.
Вот что я набыдлокодил:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#coding=utf-8
 
#~ считываем матрицу lst или берем с переменной в зависимости от комментариев
lst = [[9, 5, 3], [0, 7, -1], [-5, 2, 9,]]
#~ original это правильный ответ для проверки
original = [[3, 21, 22], [10, 6, 19], [20, 16, -1]]
#~ lst = []
#~ while True:
    #~ tmp = input()
    #~ if tmp == 'end':
        #~ break
    #~ lst.append(tmp.split())
 
#~ выводим для проверки оригинальный список 
for i in lst:
    print(i)    
    
#~ выводим финальную матрицу в виде строк
for i in range(len(lst)):
    for j in range(len(lst[0])):
        #~ для клеток с не конечными координатами i j считаем по условию:
        if i < (len(lst)-1) and j < (len(lst[0])-1):
            print(lst[i-1][j] + lst[i+1][j] + lst[i][j-1] + lst[i][j+1], end=' ')
        #~ если это последний столбец, но не последняя строка
        elif i != (len(lst)-1) and j == (len(lst[0])-1):
            print(lst[i-1][j] + lst[i+1][j] + lst[i][j-1] + lst[i][0], end=' ') 
        #~ если это последняя строка, но не столбец
        elif i == (len(lst)-1) and j != (len(lst[0])-1):    
            print(lst[i-1][j] + lst[0][j] + lst[i][j-1] + lst[i][j+1], end=' ')
        #~ тогда это последний символ в правом нижнем углу
        else:   
            print(lst[i-1][j] + lst[0][j] + lst[i][j-1] + lst[i][0], end=' ')
    #~ переходим на новую строку
    print() 
    
for i in original:
    print(i)
При выполнении кода в консоли я получаю:

Код
[9, 5, 3]
[0, 7, -1]
[-5, 2, 9]
3 21 22 
10 6 19 
20 16 -1 
[3, 21, 22]
[10, 6, 19]
[20, 16, -1]

------------------
(program exited with code: 0)
Press return to continue
Т.е. мой вывод совпадает с решением - я написал код правильно программа работает корректно локально.
Но при попытке проверить решение на сайте выдает:

Код
Failed test #1. Wrong answer
Input:
9 5 3
0 7 -1
-5 2 9
end
Your output:
-5035 2793 9-159 
9-5-17 520-1 3970 
0992 75-59 -132-5
Correct output:
3 21 22
10 6 19
20 16 -1

Может кто подскажет, в чем может быть проблема?
Я понимаю, что вопрос скорее к разработчикам сервиса обучения, но в том конкретном уроке автор не отвечает на комментарии.
1
16.12.2016, 20:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2016, 20:01
Помогаю со студенческими работами здесь

Сгенерировать матрицу размером n*n, в которой каждый элемент равен сумме элементов, стоящих выше и левее
Помогите решить задачу! Написать программу, формирующую матрицу размером n*n (n вводится...

Создать матрицу, каждый элемент которой равен сумме соответствующих элементов двух первых матриц
Даны 2 двумерных массива одинаковых размеров. Создать третий массив такого же размера, каждый...

Создать третий массив того же размера, каждый элемент которого равен сумме соответствующих элементов первых двух
3. Решить задачу: даны два двумерных массива одинакового размера. Создать третий массив того же...

Создать третий массив того же размера, каждый элемент которого равен сумме соответствующих элементов двух первых массивов
Даны два двумерных массива размером nxm.Создать третий массив того же размера, каждый элемент...

Построить последовательность С, каждый элемент которой равен сумме элементов строк матрицы В
Построить последовательность С, каждый элемент которой равен сумме элементов строк матрицы В....

Построить матрицу B, элемент bij которой равен сумме элементов данной матрицы
Дана квадратная матрица А n-го порядка. Построить матрицу B, элемент bij которой равен сумме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru