Способ поворота матрицы - получить ее транспонирование, а затем перевернуть все строки.
У меня есть две функции: map (которая возвращает транспонирование) и reverse (завершение поворота на 90 °), в консоли я делаю следующее:
(в обратном порядке (применить список карт (список (список 1 2 3 4) (список 5 6 7 8) (список 9 10 11 12) (список 13 14 15 16))))
Result: {{4 8 12 16} {3 7 11 15} {2 6 10 14} {1 5 9 13}}
Что верно, но когда я сделал функцию, она не работает.
(define (transpose2 matriz)
(reverse (apply map list matriz))
Затем делаем:
> (transpose2 (list (list 1 2 3 4) (list 5 6 7 8) (list 9 10 11 12) (list 13 14 15) ) )
Просто выдает ошибку:
мкар: нарушение договора
ожидается: mpair?
дано: ()
Я пробовал импортировать (srfi: 41) (я тоже работаю с r6rs), но он тоже не работает. Эта функция работает для матрицы 3 x 3.
Как я могу это исправить?