Транспонирование квадратной матрицы по диагонали
Пытаюсь транспонировать квадратную матрицу по основной диагонали. Сайт Acmp не принимает код, может я условие неверно понимаю?
https://acmp.ru/asp/do/index.asp?main=task&id_course=1&id_section=8&id_topic=120&id_problem=742
import random
N = int(input())
b =[[random.randint(0, 10) for i in range(N)] for e in range(N)]
a = np.transpose(b)
for e in b:
print(e)
print(a)
#второе решение
n = int(input())
b = np.random.randint(0,9, size=(n,n))
a = b.transpose()
print(b)
print(a)
Я так понимаю, там нужно без numpy делать. Подскажите, запутался конкретно. Еще одно сделал решение. Не подходит
n = 3
matrix = [[1, 3, 5], [2, 4, 6], [7, 8, 9]]
trans_matrix = []
for i in range(n):
trans_matrix.append([0] * n)
for i in range(n):
for j in range(n):
trans_matrix[j][i] = matrix[i][j]
for i in range(len(trans_matrix)):
print(*trans_matrix[i])
Ответы (2 шт):
Попробуйте это. Можете изменить формат генерации и вывода, важна только функция transpose.
import random
def print_matrix(matrix):
for _ in matrix:
print(_)
print()
def transpose(arr):
return [[arr[j][i] for j in range(len(arr))] for i in range(len(arr[0]))]
size = int(input())
arr = [[random.randint(0, 10) for i in range(size)] for e in range(size)]
print_matrix(arr)
arr = transpose(arr)
print_matrix(arr)
Используйте input для ввода из stdin:
size = int(input())
arr = [input().split() for _ in range(size)]
arr = transpose(arr)
for _ in arr:
print(' '.join(_))
Если говорить не о конкретной реализации, а об алгоритме транспонирования, то он заключается в смене местами индексов массива. Например, если мы перебираем массив переменными i и вложенно j, то должно стать наоборот - первый индекс j, а подиндекс - i. Как правильно отметил Mbo - проверьте формат вывода, возможно дело именно в нем