1# frozen_string_literal: true
2
3# Collatz conjecture functions
4module RosettaCollatz
5 def self.collatz(num)
6 raise 'num must be an Integer' unless num.is_a?(Integer)
7
8 if num.even?
9 num / 2
10 else
11 3 * num + 1
12 end
13 end
14
15 def self.collatz_sequence(num)
16 raise 'num must be an Integer' unless num.is_a?(Integer)
17
18 res = "#{num}: "
19 i = num
20 while i != 1
21 res << "#{i}, "
22 i = collatz(i)
23 end
24 res << '1'
25 res
26 end
27end