С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.65/23: Рейтинг темы: голосов - 23, средняя оценка - 4.65
Dennis Ritchie
548 / 140 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
1

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

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

Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку "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. Нужно только решение. Разжёвывать само решение не нужно. Заранее спасибо.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2014, 17:12
Ответы с готовыми решениями:

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

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

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

Вывести массив размера N, первый элемент которого равен А, второй В, а каждый предыдущий элемент равен сумме всех предыдущих
Данны целые числа N(<2), А и В. сформулировать и вывести целочисленный массив...

Получить новую матрицу {b ij} n, n, элемент bij которой равен сумме элементов данной матрицы
Данная Действительная квадратная матрица {a ij} n, n. Получить новую матрицу {b...

21
Dennis Ritchie
548 / 140 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 17:22  [ТС] 2
Подскажите, пожалуйста, как можно считать матрицу в массив через пробелы и через переходы на новую строку, пока не встретится строка "end".
0
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
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)
2
Dennis Ritchie
548 / 140 / 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
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
30.11.2014, 20:43 5
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
ну вот я научился правильно печатать матрицу по строкам:
По строкам это она у меня печаталась, а у тебя она тупо в строку печатается, как матрица вектор.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А как избавиться от выхода индексов за пределы списка:
Задавай количество строк и столбцов и делай два цикла, один обходит столбцы другой строки и в этих циклах у тебя будет происходить ввод.
0
Dennis Ritchie
548 / 140 / 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
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
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
Dennis Ritchie
548 / 140 / 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
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
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
Dennis Ritchie
548 / 140 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 23:06  [ТС] 10
Цитата Сообщение от tsar925 Посмотреть сообщение
По логике это количество элементов в одной строке
Да, это и так понятно. А как узнать, сколько я ввёл элементов в одной строке?
Цитата Сообщение от tsar925 Посмотреть сообщение
Ух тыж ёжики зеленые, лучше я бы это не видел теперь спать спокойно не смогу... Ужасы сниться будут.
Страшно? Это код C++ программиста, записанный на Python'e.
0
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
30.11.2014, 23:27 11
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Да, это и так понятно. А как узнать, сколько я ввёл элементов в одной строке?
Разрезать строку с помощью split и посчитать количество элементов.
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Страшно?
Если честно, то ооочень
0
Dennis Ritchie
548 / 140 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
30.11.2014, 23:28  [ТС] 12
Цитата Сообщение от tsar925 Посмотреть сообщение
Разрезать строку с помощью split и посчитать количество элементов.
Как это сделать?
0
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
30.11.2014, 23:28 13
len(inp.strip().split())
0
Dennis Ritchie
548 / 140 / 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
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
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
Dennis Ritchie
548 / 140 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
01.12.2014, 00:40  [ТС] 16
Цитата Сообщение от tsar925 Посмотреть сообщение
Можно так
Нет, так не пойдёт. Ведь система может ввести как квадратную матрицу, так и прямоугольную.
Что ли вообще нельзя никак сосчитать количество столбцов?
0
alex925
2675 / 2281 / 631
Регистрация: 19.03.2012
Сообщений: 8,831
01.12.2014, 00:47 17
Просто посчитать количество столбцов я уже сказал как

Добавлено через 1 минуту
Python
1
len(data[0].split())
0
Dennis Ritchie
548 / 140 / 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
Dennis Ritchie
548 / 140 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
01.12.2014, 06:01  [ТС] 19
Наконец-то я затолкал это решение в тестирующую систему:
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 равен сумме элементов первой матрицы
0
VeseliyMargarin
7 / 7 / 4
Регистрация: 06.06.2013
Сообщений: 69
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

Может кто подскажет, в чем может быть проблема?
Я понимаю, что вопрос скорее к разработчикам сервиса обучения, но в том конкретном уроке автор не отвечает на комментарии.
0
16.12.2016, 20:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2016, 20:01

Получить квадратную матрицу, элемент которой равен сумме элементов данной матрицы, расположенных в области
Дана квадратная марица действительных числе размерности n(n&lt;=15). Получить...

Дана действительная матрица . Получить действительную матрицу, элемент которой равен сумме элементов данной матрицы
см. вложения полную задачу

По матрице А построить матрицу В того же размера, элемент которой равен минимальному элементу треугольника в А
Прошу написать программу по предоставленной задаче: По матрице А = || a ||,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru