Python помогите очень срочно
сделать вот такую матрицу
допустим n =1 2 3
# 1 1 1 1 1
# 12221
# 12321
# 12221
# 1 1 1 1 1
помогите пожалуйста
Ответы
Ответ:
val_list = [int(input()) for _ in range(3)]
final_matrix = [[] for i in range(len(val_list))]
for value_index, value in enumerate(val_list):
for index, i in enumerate(final_matrix):
if value_index <= index:
final_matrix[index].append(value)
else:
final_matrix[index].append(val_list[index])
for row in final_matrix:
row += reversed(row[:-1])
final_matrix += reversed(final_matrix[:-1])
for i in final_matrix:
print(i)
Объяснение:
входные данные: количество значений можно изменить, но надо это делать в ручную, или же можно как-то по-своему. я этот момент захардкодил, но в целом от этого ничего не зависит.
алгоритм создания матрицы: первоначально матрица состоит из пустых списков количество которых равно длине списка с входными данными.
алгоритм внесения в матрицу значений: вносимое число проверяется: если оно меньше или равно максимально допустимому(максимально допустимое значение в строке равно соответственно индексу в массиве значений) то вносится в строку матрицы, иначе вносится макс. допустимое значение.
алгоритм отражения: после всех махинаций матрица с входными данными [1, 2, 3] будет выглядеть так:
[1, 1, 1]
[1, 2, 2]
[1, 2, 3]
для получения зеркального отражения в строчках я прохожусь по каждой строке и добавляю к ней эту же отраженную строчку без последнего элемента.
далее я делаю такую же операцию, но только со всей матрицей.
вывод:
[1, 1, 1, 1, 1]
[1, 2, 2, 2, 1]
[1, 2, 3, 2, 1]
[1, 2, 2, 2, 1]
[1, 1, 1, 1, 1]