Ну, мне сказали сделать функцию Matrix Transpose в общем lisp. Я новичок, поэтому я не знаю, как много.Matrix Transpose Common Lisp
My Matrix - это список списков, и я не могу использовать apply, mapcar или аналогичный для его решения, просто CONS, CAR и CDR. Если нет, то мое решение было бы это (я кладу это решение, так кто-то может использовать его):
(DEFUN transpose (List)
(apply #'mapcar #'list List)
)
Но я не могу ничего из вышеперечисленного использовать.
Функция должна быть рекурсивной, без петель или аналогичной.
Итак, вопрос в том, как это можно сделать?
Вот как далеко я ушел, но он получил ошибку переполнения. Я не знаю, как это сделать (я мог бы сделать это в C++ или Java, но я попросил, чтобы сделать это в Лиспе ...)
(DEFUN transpose (Matrix)
(COND ((NULL Matrix) NIL
)
(T (CONS (CAR(CAR Matrix))(transpose (CONS (CAR(CDR Matrix)) (CDR Matrix))))
)
)
)
Любая помощь будет благодарил!
Зачем нужны ограничения? – Carcigenicate
Просто потому, что учитель сказал. Я не понимаю ограничений –
Нечетное требование. Я бы подумал, что позволить новичкам использовать основные функции языка - это хорошо. – Carcigenicate