Помогите решить задачу: Неразмышлимая проблема
Контрольная работа
макс. 35 балл.
Дедлайн: 4 июл., 13:26
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Софи откусила кусочек.
— У! Нет! На помощь! — Она быстро выплюнула шишгурец и чуть не задохнулась. — Фу! Как лягушачья кожа или тухлая рыба!
— Ещё хуже, – веселился великан, покатываясь со смеху. — Мне его вкус напоминает комарана или медузлика.
— Неужели нам придётся его есть?!
— Конечно, если не хочешь стать совсем тощей, что тебя ноги ловить не будут.
— Вы хотите сказать «носить не будут»? «Носить» и «ловить» — не одно и то же.
В глазах великана снова появилось прежнее трогательно-печальное выражение.
— Слова, — сказал он, — для меня неразмышиная проблема.
Напишите программу, которая будет размышлять о проблемах БДВ.
Формат ввода
Вводится число – количество строк в списке и количество элементов в строке.
Затем вводятся строки из m чисел через пробел.
Формат вывода
Вывести словарь, в котором ключи – это числа, стоящие на главной диагонали матрицы, а значения – кортеж из остальных значений в этом столбце, не включая число-ключ, без повторений, в порядке убывания. Если на диагонали числа повторяются, то значения по этим столбцам должны находиться в одном кортеже.
Пример 1
Ввод Вывод
4
1 2 3 4
5 2 3 1
4 1 5 3
2 1 3 2
{1: (5, 4, 2), 2: (4, 3, 2, 1), 5: (3,)}
Пример 2
Ввод Вывод
5
2 3 1 0 7
-1 3 7 8 0
7 6 3 3 1
1 3 0 2 3
0 1 3 7 -1
{2: (8, 7, 3, 1, 0, -1), 3: (7, 6, 3, 1, 0), -1: (7, 3, 1, 0)}
Примечания
Главной диагональю квадратной матрицы будем называть диагональ, которая начинается в верхнем левом углу матрицы и изменяется вниз и вправо, пока не будет достигнут правый нижний элемент матрицы.
В общем тут такая песня. Из матрицы (первый пример) нужно получить такой список
[[1, [5, 4, 2]], [5, [3, 3, 3]], 2, [1, 2, 3, 4]].
Его получил, осталось только сделать из него словарь и значения ключей превратить в множества, чтобы не было повторов. До дедлайна 13:26 не успеваю...
ЗЫ: Сделал. Жаль что не уложился в роковые 13:26
m = [
[1, 2, 3, 4],
[5, 2, 3, 1,],
[4, 1, 5, 3,],
[2, 1, 3, 2]
]
diag = []
st = []
for i in range(len(m)):
diag += [m[i][i]]
r = []
for k in range(len(m)):
if i == k:
continue
else:
r += [m[k][i]]
st += [r]
n = list(zip(diag,st))
nn = list(map(list,n))
res = [i[0] for i in nn]
res2 = sorted(n)
result = []
for i in range(len(res2) - 1):
if res2[i][0] == res2[i + 1][0]:
m3 = list(set(res2[i][1] + res2[i + 1][1]))
result += [res2[i][0], m3]
common = [i for i in nn if not i[0] in result] + [result]
common2 = [[i[0],tuple(set(i[1]))] for i in common]
print(dict(common2))
{1: (2, 4, 5), 5: (3,), 2: (1, 2, 3, 4)}
Главной диагональю квадратной матрицы будем называть диагональ, которая начинается в верхнем левом углу матрицы и изменяется вниз и вправо, пока не будет достигнут правый нижний элемент матрицы.
Это вообще понять невозможно. объясни по-простому