29 lines
711 B
Text
29 lines
711 B
Text
include :set
|
|
|
|
happiness = set.new 1
|
|
sadness = set.new
|
|
|
|
sum_of_squares_of_digits = { num |
|
|
num.to_s.dice.reduce 0 { sum, n | sum = sum + n.to_i ^ 2 }
|
|
}
|
|
|
|
happy? = { n, seen = set.new |
|
|
when {true? happiness.include? n } { happiness.merge seen << n; true }
|
|
{ true? sadness.include? n } { sadness.merge seen; false }
|
|
{ true? seen.include? n } { sadness.merge seen; false }
|
|
{ true } { seen << n; happy? sum_of_squares_of_digits(n), seen }
|
|
}
|
|
|
|
num = 1
|
|
happies = []
|
|
|
|
while { happies.length < 8 } {
|
|
true? happy?(num)
|
|
{ happies << num }
|
|
|
|
num = num + 1
|
|
}
|
|
|
|
p "First eight happy numbers: #{happies}"
|
|
p "Happy numbers found: #{happiness.to_array.sort}"
|
|
p "Sad numbers found: #{sadness.to_array.sort}"
|