#* http://rosettacode.org/wiki/Kaprekar_numbers
Find Kaprekar numbers
*#
include :seq
kaprekar = { limit |
seq.range(1, limit).select { num |
num == 1 || {
sqr = (num ^ 2).to_s
seq.range(0, (sqr.length - 1)).any? { i |
lhs = sqr[0,i].to_i
rhs = sqr[i + 1,-1].to_i
(rhs > 0) && { lhs + rhs == num }
}
}
}
}
p "Kaprekar numbers below 10,000:"
p kaprekar(10000).to_array
p "Number of Kaprekar numbers below 1,000,000:"
p kaprekar(1000000).count