请在 2024 年 Clojure 状态调查! 分享您的想法。

欢迎!有关此操作的信息,请参阅 关于 页面。

+3
math.combinatorics
重标签

当使用包含一些重复项目的 items,并提供了 :min & :max 时,clojure.math.combinatorics/partitions 可能会抛出 IndexOutOfBoundsException。例如
(dorun (clojure.math.combinatorics/partitions [1 1 2 3 4 5] :min 5 :max 5)) 执行错误 (IndexOutOfBoundsException) 在 clojure.math.combinatorics/m5$fn (combinatorics.cljc:859)。
items 不包括至少一个重复项时,我无法复现此问题;当 :min 至少不是 5 时,也无法复现。我认为:max 必须提供,但不一定必须等于:min。
它对非数字项发生,且与 items 的顺序无关。似乎只有在第一个项目被重复时才会发生,但对其他项目则不会。

1 个答案

+1

已选择
 
最佳答案

这是我在验证问题(并发现一些额外的问题,例如:min 5单独导致堆空间错误:https://clojure.atlassian.net/browse/MCOMB-11

我很想知道这个修复了你发现的其他情况吗!

是的,似乎修复了我发现的所有异常情况。还可能知道它似乎还解决了栈溢出错误

```
(dorun (combo/partitions [3 2 7 7 14 5 3 4 9 2] :min 2 :max 2))
;; => 执行错误 (StackOverflowError) 在 clojure.math.combinatorics/m5 (combinatorics.cljc:870)。
```

我确信有更简单的复制方式,但我还没找到。

谢谢!
...