Skip to content

Instantly share code, notes, and snippets.

@kleinjm
Last active May 3, 2019 14:06
Show Gist options
  • Save kleinjm/9836a99702d000005df3b22a030048ae to your computer and use it in GitHub Desktop.
Save kleinjm/9836a99702d000005df3b22a030048ae to your computer and use it in GitHub Desktop.
Number multiplier
# frozen_string_literal: true
def generate(number)
split_digits = number.to_s.chars.map(&:to_i)
split_digits.inject(0) { |sum, digit| sum + digit**2 }
end
def test_generate
test_cases = {
0 => 0,
1 => 1,
2 => 4,
3 => 9,
123 => 14,
58 => 89
}
test_cases.each do |input, output|
if generate(input) == output
puts "Case #{input} => #{output} passed"
else
puts "Case #{input} => #{output} failed"
end
end
end
def is_blah(number)
seen_numbers = []
while !seen_numbers.include?(number) && number != 1 && number != 0
seen_numbers << number
number = generate(number)
end
number == 1
end
def test_is_blah
test_cases = {
0 => false,
1 => true,
2 => false,
3 => false,
7 => true
}
test_cases.each do |input, output|
if is_blah(input) == output
puts "Case #{input} => #{output} passed"
else
puts "Case #{input} => #{output} failed"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment