Hailstone sequence: Difference between revisions
Content added Content deleted
(Hailstone sequence / Collact conjecture for Onyx (wasm)) |
|||
Line 7,300: | Line 7,300: | ||
[351, 77031] |
[351, 77031] |
||
</pre> |
</pre> |
||
=={{header|Onyx (wasm)}}== |
|||
<syntaxhighlight lang="C"> |
|||
use core { * } |
|||
hailstone :: (n: u32) -> [..]u32 { |
|||
seq: [..]u32; |
|||
array.push(&seq, n); |
|||
while n > 1 { |
|||
n = n/2 if n%2 == 0 else (n*3)+1; |
|||
array.push(&seq, n); |
|||
} |
|||
return seq; |
|||
} |
|||
Longest :: struct { num, len : u32; } |
|||
main :: () { |
|||
// ------- |
|||
// task 1: |
|||
// ------- |
|||
// "Create a routine to generate the hailstone |
|||
// sequence for a number." |
|||
i := 27; |
|||
seq := hailstone(i); |
|||
printf("Task 1:\n{}: {}\n\n", |
|||
i, |
|||
seq |
|||
); |
|||
// ------- |
|||
// task 2: |
|||
// ------- |
|||
// "Use the routine to show that the hailstone |
|||
// sequence for the number 27 has |
|||
// 112 elements starting with |
|||
// 27, 82, 41, 124 and ending with 8, 4, 2, 1" |
|||
slice_size := 4; |
|||
len := seq.length; |
|||
slice_first := seq[0..slice_size]; |
|||
slice_last := seq[seq.length-slice_size..seq.length]; |
|||
printf("Task 2:\nlength: {}, first: {}, last: {}\n\n", |
|||
len, |
|||
slice_first, |
|||
slice_last |
|||
); |
|||
// ------- |
|||
// task 3: |
|||
// ------- |
|||
// "Show the number less than 100,000 |
|||
// which has the longest hailstone sequence |
|||
// together with that sequences length." |
|||
l : Longest; |
|||
for i in 1..100000 { |
|||
seq := hailstone(i); |
|||
if l.len < seq.length { l = .{num = i, len = seq.length}; } |
|||
} |
|||
printf("Task 3:\nLongest Num: {}, Sequence Length: {}\n", l.num, l.len); |
|||
} |
|||
</syntaxhighlight> |
|||
=={{header|ooRexx}}== |
=={{header|ooRexx}}== |