分享您的看法,请参与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) at 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)。
```

我确信有一个更简单的复现方法,但我还没有找到。

谢谢!
...