#!/usr/bin/ruby

# Translation of: https://rosettacode.org/wiki/Hailstone_sequence#Perl

func hailstone (n) {

    var sequence = [n];

    while (n > 1) {
        sequence.append(
            n.is_even ? n.div!(2)
                      : n.mul!(3).add!(1)
        );
    }

    return(sequence);
}

var h = hailstone(27);

h[1]  ==  82 || "Item error!".die;
h.len == 112 || "Length error!".die;

"Length of hailstone(27) = %s".printlnf(h.len);
"[%s]".printlnf(h.slice(0,5) + ['...'] + h.slice(-5) -> join(', '));