gpt4 book ai didi

clojure - IllegalStateException 试图调用未绑定(bind)的 fn

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:30 25 4
gpt4 key购买 nike

我意识到以前有人问过这个问题,但我找不到我遇到的问题的答案。以下代码在 - “(println (arr 0))”处出错。然而,这一行应该打印出 4?我是 clojure 的新手,不明白我哪里出错了。

我在 REPL 中尝试了 (defn arr [4 3 2 1]) (arr 0),这似乎有效。

(defn swap-arr [my-arr x y]
(assoc my-arr x (my-arr y) y (my-arr x)))

(defn minimumSwaps [arr]
(for [i (range (count arr))]
(do (println (arr 0))
(while (not= i (arr i))
(def arr (swap-arr arr (arr i) (- 1 i)))))))

(minimumSwaps [4 3 2 1])

PS:查找最小掉期的代码还没有完成。

最佳答案

我意识到,我在调试时遇到了错误,那是因为“range”是一个惰性序列,REPL 不喜欢它。

我还是把代码改成这个了-

(defn minimumSwaps [org-vec]
(loop [mut-vec org-vec, i 0, swap-count 0]
(if (< i (count org-vec))
(let [sub-arr (subvec mut-vec i)]
(recur (swap-arr mut-vec (mut-vec i) (apply min sub-arr))
(+ i 1)
(if (= (apply min sub-arr) (mut-vec i)) swap-count (+ swap-count 1))))
swap-count)))

关于clojure - IllegalStateException 试图调用未绑定(bind)的 fn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51696934/

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