RosettaCodeData/Task/Hailstone-sequence/Ballerina/hailstone-sequence.ballerina
2025-06-11 20:16:52 -04:00

34 lines
923 B
Text

import ballerina/io;
function hailstone(int m) returns int[] {
int n = m;
int[] h = [n];
while n != 1 {
n = n % 2 == 0 ? n / 2 : 3 * n + 1;
h.push(n);
}
return h;
}
public function main() {
int[] h = hailstone(27);
int len = h.length();
io:println("For the Hailstone sequence starting with n = 27:");
io:println(" Number of elements = ", len);
io:println(" First four elements = ", h.slice(0, 4));
io:println(" Final four elements = ", h.slice(len - 4));
io:println("\nThe Hailstone sequence for n < 100,000 with the longest length is:");
int longest = 0;
int longlen = 0;
foreach int n in 1...99999 {
h = hailstone(n);
len = h.length();
if len > longlen {
longest = n;
longlen = len;
}
}
io:println(` Longest = ${longest}`);
io:println(` Length = ${longlen}`);
}