冰雹序列

作者:TimToady

数字的冰雹序列可以从一个起始正整数 n 生成,方法如下:

* 如果 n 为 1,则序列结束。* 如果 n 为偶数,则序列的下一个 n = n/2 * 如果 n 为奇数,则序列的下一个 n = (3 * n) + 1

(未经证实的)科拉茨猜想是,任何起始数字的冰雹序列最终都会终止。

任务

创建一个例程来生成一个数字的冰雹序列。

使用该例程来证明数字 27 的冰雹序列有 112 个元素,以 27、82、41、124 开头,以 8、4、2、1 结尾。

显示小于 100,000 的数字中,哪个数字的冰雹序列最长,并显示该序列的长度。

(但不要显示实际的序列)!

更多

http://rosettacode.org/wiki/Hailstone_sequence#Raku

源代码:hailstone-sequence.pl

use v6;

sub hailstone($n) { $n, { $_ %% 2 ?? $_ div 2 !! $_ * 3 + 1 } ... 1 }

my @h = hailstone(27);
say "Length of hailstone(27) = {+@h}";
say ~@h;

my $m max= +hailstone($_) => $_ for 1..99_999;
say "Max length $m.key() was found for hailstone($m.value()) for numbers < 100_000";