Strange numbers
func generate_from_prefix(limit, p, base) {
var seq = [p]
for d in (base-1 -> primes) {
for k in ([1, -1]) {
var r = p[0]+(k*d)
next if (r < 0)
next if (r >= base)
var t = [r, p...]
if (t.digits2num(base) <= limit) {
seq << __FUNC__(limit, t, base)...
}
}
}
return seq
}
func strange_numbers(limit, base = 10, digits = @(^base)) {
digits.map {|p| generate_from_prefix(limit, [p], base)... }\
.map {|t| t.digits2num(base) }\
.sort.uniq
}
strange_numbers(500).grep { _ > 100 }.slices(10).each{
.join(' ').say
}Output:
Last updated
Was this helpful?