我想實現一個函數,它需要一個數字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^N) - 1的二進制格式,並使用bit-test
使布爾值列表,最後鏈接所有這些名單。但是,這對我來說似乎很笨拙,我想應該有一個更優雅的解決方案。
嘗試一種遞歸方法:假設你知道如何做一個(make-bools 2),你將如何創建(make-bools 3):只需在每個元素前加上false和true。將此概括爲(make-bools n)表示爲(make-bools n-1)並處理(make-bools 0),這應該導致列表爲空。 – 2012-01-08 12:59:12
謝謝,我也想到了遞歸,但方式不對。我會嘗試這種方法。 – 2012-01-08 13:21:45