#* 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