86得票70回答
编程竞技:考拉兹猜想

受http://xkcd.com/710/启发,这里提供一个代码高尔夫挑战。 挑战 给定一个大于0的正整数,输出它的Hailstone序列。 Hailstone序列 详见Wikipedia。 如果数是偶数,则将其除以2。 如果数是奇数,则将其乘以3再加1。 重复以上步骤,直到产...

38得票1回答
考拉兹猜想 Python - 仅在2万亿以上输出错误!

我用Python3写了一个基本脚本,用于计算Collatz猜想。它以正整数作为输入,并返回序列下降到1所需的步骤。 我的脚本对于任何小于约2万亿的整数输入都能完美运行,但是超过这个阈值后,输出结果会变得太小。 以下是一些示例输入,我的脚本输出和实际正确输出:Integer Input ...

19得票3回答
为什么这个简单的Haskell算法如此缓慢?

剧透警告:这涉及到来自欧拉计划的问题14。 下面的代码需要大约15秒才能运行。我有一个非递归的Java解决方案,只需1秒即可运行。我认为我应该能够将这段代码优化到更接近那个速度。import Data.List collatz a 1 = a collatz a x | even x...

14得票8回答
欧拉计划问题14(考拉兹猜想)

以下是针对正整数集合定义的迭代序列: n -> n/2 (n为偶数) n -> 3n + 1 (n为奇数) 使用上述规则,从13开始生成以下序列: 13 40 20 10 5 16 8 4 2 1 可以看到,这个序列(从13开始到1结束)包含10个项。虽然它还没有被证...

10得票1回答
为什么这个记忆化的Euler14实现在Raku中比Python慢得多?

最近我在玩欧拉计划中的第14个问题:在范围1-1,000,000内,哪个数字生成的Collatz序列最长? 我知道必须使用备忘录技术以获得合理的时间,下面这段Python代码使用该技术(将值存储到字典中)相对较快地返回了一个答案: #!/usr/bin/env python L = 1_...

9得票1回答
考拉兹猜想相关面试题

这是一个面试题,与欧拉计划 第14题 有关。 考拉兹猜想指出,如果您按照以下步骤操作: If n is even, replace n by n/2. If n is odd, replace n by 3n+1. 最终你会得到1。 例如,5 -> 16 -> 8 -&g...

7得票3回答
延迟序列:针对Euler项目14的“向前查看”的解法

我试图以一种懒惰的方式解决欧拉计划问题14。不幸的是,我可能在试图做不可能的事情:创建一个既是懒惰的序列,又可以“向前看”未计算的值。 为了测试正确性而编写的非懒惰版本是: (defn chain-length [num] (loop [len 1 n num] (...