def toRange
(s
: String, base
: Int
= 10): Range
= { Range.inclusive(Integer.parseInt(arr(0), base), Integer.parseInt(arr(1), base))
}
def isKaprekar
(i
: Int
): Boolean
= { val str
= math.
pow(i,
2).
toInt.
toString c <- 1 to (str.length - 1)
part1 = str.slice(0, c).toInt
part2 = str.slice(c, str.length).toInt
} yield (part1
!= 0 && part2
!= 0 && i
== part1 + part2
) }
Seq("2 100", "101 9000").foreach(s => println(toRange(s).filter(isKaprekar).mkString(" ")))
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewogIGRlZiB0b1JhbmdlKHM6IFN0cmluZywgYmFzZTogSW50ID0gMTApOiBSYW5nZSA9IHsKICAgIHZhbCBhcnIgPSBzLnNwbGl0KCIgIikKICAgIFJhbmdlLmluY2x1c2l2ZShJbnRlZ2VyLnBhcnNlSW50KGFycigwKSwgYmFzZSksIEludGVnZXIucGFyc2VJbnQoYXJyKDEpLCBiYXNlKSkKICB9CiAgCiAgZGVmIGlzS2FwcmVrYXIoaTogSW50KTogQm9vbGVhbiA9IHsKICAgIHZhbCBzdHIgPSBtYXRoLnBvdyhpLCAyKS50b0ludC50b1N0cmluZwogICAgdmFsIHJldCA9IGZvciB7CiAgICAgIGMgPC0gMSB0byAoc3RyLmxlbmd0aCAtIDEpCiAgICAgIHBhcnQxID0gc3RyLnNsaWNlKDAsIGMpLnRvSW50CiAgICAgIHBhcnQyID0gc3RyLnNsaWNlKGMsIHN0ci5sZW5ndGgpLnRvSW50CiAgICB9IHlpZWxkIChwYXJ0MSAhPSAwICYmIHBhcnQyICE9IDAgJiYgaSA9PSBwYXJ0MSArIHBhcnQyKQogICAgcmV0LmNvbnRhaW5zKHRydWUpCiAgfQogIAogIFNlcSgiMiAxMDAiLCAiMTAxIDkwMDAiKS5mb3JlYWNoKHMgPT4gcHJpbnRsbih0b1JhbmdlKHMpLmZpbHRlcihpc0thcHJla2FyKS5ta1N0cmluZygiICIpKSkKfQ==