受http://xkcd.com/710/启发,这里提供一个代码高尔夫挑战。 挑战 给定一个大于0的正整数,输出它的Hailstone序列。 Hailstone序列 详见Wikipedia。 如果数是偶数,则将其除以2。 如果数是奇数,则将其乘以3再加1。 重复以上步骤,直到产...
我用Python3写了一个基本脚本,用于计算Collatz猜想。它以正整数作为输入,并返回序列下降到1所需的步骤。 我的脚本对于任何小于约2万亿的整数输入都能完美运行,但是超过这个阈值后,输出结果会变得太小。 以下是一些示例输入,我的脚本输出和实际正确输出:Integer Input ...
剧透警告:这涉及到来自欧拉计划的问题14。 下面的代码需要大约15秒才能运行。我有一个非递归的Java解决方案,只需1秒即可运行。我认为我应该能够将这段代码优化到更接近那个速度。import Data.List collatz a 1 = a collatz a x | even x...
以下是针对正整数集合定义的迭代序列: n -> n/2 (n为偶数) n -> 3n + 1 (n为奇数) 使用上述规则,从13开始生成以下序列: 13 40 20 10 5 16 8 4 2 1 可以看到,这个序列(从13开始到1结束)包含10个项。虽然它还没有被证...
最近我在玩欧拉计划中的第14个问题:在范围1-1,000,000内,哪个数字生成的Collatz序列最长? 我知道必须使用备忘录技术以获得合理的时间,下面这段Python代码使用该技术(将值存储到字典中)相对较快地返回了一个答案: #!/usr/bin/env python L = 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...
我试图以一种懒惰的方式解决欧拉计划问题14。不幸的是,我可能在试图做不可能的事情:创建一个既是懒惰的序列,又可以“向前看”未计算的值。 为了测试正确性而编写的非懒惰版本是: (defn chain-length [num] (loop [len 1 n num] (...