n
0 から 2^n-1 までの 2進数を生成したいと思います。3桁の例「000」「001」「010」「111」(10進数で0~7)。私が使用した方法は、java.lang.Integer.toBinaryString()
メソッドを使用し、次のように必要に応じてゼロを追加することです。
(defn pad-zero [s n]
(str (reduce str (repeat (- n (count s)) "0")) s))
(defn binary-permutation [n]
(map (fn [s] (pad-zero s n))
(map #(Integer/toBinaryString %) (range 0 (Math/pow 2 n)))))
このコードを使用すると、このように必要なものを生成できます。3 桁の場合:
(binary-permutation 3)
=> ("000" "001" "010" "011" "100" "101" "110" "111")
しかし、このコードは少し冗長に見えます。これを行うためのより良い方法またはより多くのclojure方法はありませんか?