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