gpt4 book ai didi

haskell - 什么是方便的 Haskell 概念来生成 2^m*3^n*5^l 形式的数字

转载 作者:行者123 更新时间:2023-12-04 18:11:18 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





New state of the art in unlimited generation of Hamming sequence

(3 个回答)


上个月关门。




我正在尝试生成 2^m*3^n*5^l 形式的数字,其中 m、n 和 l 是自然数,包括 0。
顺序如下:1、2、3、4、5、6、8、9、10、12、15、16、18、20、24、25、27、30、32、......
我正在通过获得百万分之一的数字来测试它。我使用列表理解和排序来实现它,但它需要的时间太长。我想要一个更快的解决方案。我花了几天时间试图做到这一点无济于事。
我不想要一个完整的解决方案。我只想知道在完成它时需要什么 Haskell 概念。

最佳答案

这是一种不需要任何 Haskell 概念的方法,只需要一些数学和计算机科学。
捕获一个提供优先队列的库。
初始化一个只包含数字 1 的优先级队列。
无限循环以下内容:从队列中提取最小值。将其放在输出列表中。将该数字乘以 2、3 和 5 作为队列中的三个单独条目插入。确保队列插入函数合并重复,因为由于乘法的交换性,它们会有很多。
如果您有一个最大的工作量,您可以使用它来修剪对队列的插入作为次要优化。或者,您可以利用实际的 Haskell 属性并使用惰性返回一个无限列表。

关于haskell - 什么是方便的 Haskell 概念来生成 2^m*3^n*5^l 形式的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71947057/

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