gpt4 book ai didi

list - Clojure 瞬变 - 关联!导致异常

转载 作者:行者123 更新时间:2023-12-02 06:19:47 25 4
gpt4 key购买 nike

这是我要运行的函数...

(defn mongean [cards times]
(let [_cards (transient cards)]
(loop [i 0 c (get cards i) _count (count cards) _current (/ _count 2)]
(assoc! _cards _current c)
(if ((rem i 2) = 0)
(def _newcur (- _current (inc i)))
(def _newcur (+ _current (inc i))))
(if (<= i _count)
(recur (inc i) (get cards i) _count _newcur )))
(persistent! _cards)))

它导致了这个异常...

Exception in thread "main" java.lang.ClassCastException: clojure.lang.PersistentHashSet$TransientHashSet cannot be cast to clojure.lang.ITransientAssociative

作为 clojure 的新手,我也很感激对我的上述方法提出的任何建设性批评。目标是获取一个列表,并返回一个重新排序的列表。

最佳答案

我假设您正在尝试实现 Mongean洗牌。您的方法非常必要,您应该尝试使用更实用的方法。

如果我们计算卡片的最终顺序(根据维基百科公式),然后使用内置的 replace 函数进行映射,这将是一个可能的实现:

 (defn mongean [cards]
(let [num-cards (count cards)
final-order (concat (reverse (range 1 num-cards 2)) (range 0 num-cards 2))]
(replace cards final-order)))

user> (mongean [1 2 3 4 5 6 7 8])
(8 6 4 2 1 3 5 7)

关于list - Clojure 瞬变 - 关联!导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13539204/

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