Rosetta Code

Hailstone sequence

Build a hailstone sequence and report its length.

Intro View source
Source rosettacode/popular/hailstone_sequence.vibe
# title: Hailstone sequence
# source: https://rosettacode.org/wiki/Hailstone_sequence
# category: Rosetta Code
# difficulty: Intro
# summary: Build a hailstone sequence and report its length.
# tags: popular, math, loops, sequences

def hailstone(value)
  sequence = []
  current = value

  while true
    sequence = sequence.push(current)
    if current == 1
      return sequence
    elsif current.even?
      current = current / 2
    else
      current = (current * 3) + 1
    end
  end
end

def run
  sequence = hailstone(27)
  {
    length: sequence.size,
    first_ten: sequence.first(10),
    last_ten: sequence.last(10)
  }
end
Output
Press run to execute run from this example.
rosetta-code popular math loops sequences browser-runner