冰雹序列
作者: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
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";