gpt4 book ai didi

clojure - 返回 n 个 bool 值的所有组合的函数?

转载 作者:行者123 更新时间:2023-12-05 00:01:51 25 4
gpt4 key购买 nike

我正在尝试实现一个函数,该函数采用数字 n 并返回包含 n 个 bool 值的所有可能组合的 bool 值列表列表。例如的输出(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制作一个 bool 值列表,最后链接所有这些列表。但这对我来说似乎很笨拙,我想必须有一个更优雅的解决方案。

最佳答案

我不知道使用现有库是否被认为是“作弊”,而不是回应您问题的算法细节,但 Clojure-contrib 有一组常见的组合函数,可用于计算排列:

(require '[clojure.contrib.combinatorics :as comb])

(defn make-bools [n]
(apply comb/cartesian-product (repeat n [true false])))

http://richhickey.github.com/clojure-contrib/combinatorics-api.html

关于clojure - 返回 n 个 bool 值的所有组合的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8777342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com