Я пытаюсь реализовать функцию, которая принимает число n и возвращает список списков логических значений, который содержит все возможные комбинации из n логических значений. Выход, например, (make-bools 3)
должно выглядеть как
[[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 ^ n) - 1 в двоичный формат и использовании bit-test
, чтобы составить список логических значений, и, наконец, объединить все эти списки в цепочку. Но это кажется мне довольно неуклюжим, и я полагаю, что должно быть более элегантное решение.