2024 Clojure 状态调查!中分享您的想法。

欢迎!请查看关于页面获取更多关于如何使用本站的信息。

0
in core.rrb-vector by

在使用 aoc2018 d9 时遇到此错误。似乎这个错误在向量中的项目超过 2M 时出现。

Execution error (ArrayIndexOutOfBoundsException) at clojure.core.rrb-vector.rrbt/slice-left$fn (rrbt.clj:393).
Index 33 out of bounds for length 33

      rrbt.clj:  393  clojure.core.rrb-vector.rrbt/slice-left/fn
      rrbt.clj:  392  clojure.core.rrb-vector.rrbt/slice-left
      rrbt.clj:  375  clojure.core.rrb-vector.rrbt/slice-left
      rrbt.clj: 1098  clojure.core.rrb-vector.rrbt.Vector/slicev
rrb_vector.clj:   83  clojure.core.rrb-vector/subvec
rrb_vector.clj:   73  clojure.core.rrb-vector/subvec

我找不到 GitHub 上的问题页面,所以我想在这里提一个问题以获得帮助。

2 个回答

+1
by
selected by
 
最佳答案

您使用的是哪个版本的 core.rrb-vector?一些错误在最新版本中已修复。最最新版本可以在本 README 中的 "已发布版本" 链接处找到:https://github.com/clojure/core.rrb-vector/

如果您能使用最新版本重现此问题,我会很乐意了解如何完成。这个库中至少还有一个已知错误我不确定如何修复,但如果有其他我没有看到的,我也不会感到惊讶。

by
哇,感谢你的回答。我实际上正在使用最新版本0.1.2。如果你想让我尝试之前版本,我很乐意这么做。目前,我可以用以下代码重现问题。对不起,我的代码So;)

您可以在注释块中的第94行复制,但运行需要一些时间。https://github.com/mattdamon108/first-clojure/blob/master/aoc201809.clj
by
我相信最新版本中bug最少,所以我不建议尝试旧版本。我能在我的系统上复现bug。当我看到你的代码时,我有些好笑,因为core.rrb-vector早期的一个bug报告也是关于弹珠游戏的,可能有人正在编写代码来解决这个相同的2018年圣诞编程问题,正如你看起来正在做的那样。早期的bug已经被修复,但你似乎发现了另一个我没有看到过的。

坦白说,我有点怀疑能否想出一个方法来使core.rrb-vector既(a)正确,又(b)满足RRB树声称的运行时间。

我有个基于B树而不是RRB树的类似库的想法,但我把大量时间花在这个想法上思考和写作,而没写过代码,所以这个方法可能帮不到你,除非你喜欢编写这样的库。

与此同时,有一个包含io.lacuna.bifurcan.List类的Java库,它可能比core.rrb-vector有更少的bug,但没有任何保证:https://github.com/lacuna/bifurcan
by
首先,我很高兴知道我遇到了这个错误,因为我使用该库的方式不正确,而且也很高兴我能报告一个尚未发现的bug。

我希望这个问题能尽快解决。我真的很想无忧地使用这个库。实际上我对计算的性能非常满意。

感谢您让我了解到另一个lib io.lacuna.bifurcan.List。我会尝试它的。

再次感谢您的辛勤工作!
+1
by

顺便说一句,这是提问的正确地方。如果需要,我们将在内部jira系统中创建一个问题。

by
感谢您的信息!
...