Я пытаюсь реализовать функцию, которая принимает число n и возвращает список списков логических, содержащий все возможные комбинации n булевых. Выходной сигнал, например, (make-bools 3)
должен выглядетьФункция для возврата всех комбинаций n булевых элементов?
[[false false false]
[false false true ]
[false true false]
[false true true ]
[true false false]
[true false true ]
[true true false]
[true true true ]]
Я думал о преобразовании чисел от 0 до (2^п) - 1 в двоичном формате и использовать bit-test
, чтобы составить список булевы, в конце концов цепочки все эти списки. Но это кажется довольно неуклюжим для меня, и я полагаю, что должно быть более элегантное решение.
Попробуйте рекурсивный подход: предположим, что вы знаете, как сделать (make-bools 2), как бы вы создали (make-bools 3): просто добавив false и true для каждого элемента. Обобщите это (make-bools n), выраженное как (make-bools n-1), и обработайте (make-bools 0), что должно привести к пустым спискам. –
Спасибо, я тоже думал о рекурсии, но не так. Я попробую этот подход. –