Я пытаюсь написать функцию, которая создает перестановку списка, используя только основные конструкции списка (минусы, пустые, сначала, остальные). Я думаю о том, чтобы вставить первое значение списка всюду в рекурсивном вызове остальной части списка, но у меня проблемы с базовым случаем.создание перестановки списка в схеме
Мой код:
(define (permutation lst)
(cond
[(empty? lst) (cons empty empty)]
[else (insert_everywhere (first lst) (permutation (rest lst)))]))
(перестановка (список 1 2)) дает мне (список 1 2 2 1 пустой пустой). Есть ли что-нибудь, что я могу сделать, чтобы создать местозаполнитель (например, пустой) между различными комбинациями, но не использовать программу для интерпретации заполнителя в качестве элемента в списке?
Это мой базовый кейс справа?
Спасибо!
Я upvoted свой ответ, потому что это правильно, но я думаю, ОП пытается следовать рецепту дизайна HtDP. В HtDP есть ссылочное решение, и я взглянул на него, рассматривая предыдущий вопрос OP, но да, это не тот ответ, который вы могли бы ожидать. –