RosettaCodeData/Task/Casting-out-nines/Sidef/casting-out-nines.sidef
2018-06-22 20:57:24 +00:00

23 lines
425 B
Text

func cast_out(base = 10, min = 1, max = (base**2 - 1)) {
var b9 = base-1
var ran = b9.range.grep {|n| n%b9 == (n*n % b9) }
var x = min//b9
var r = []
loop {
ran.each {|n|
var k = (b9*x + n)
return r if (k > max)
r << k if (k >= min)
}
++x
}
return r
}
say cast_out().join(' ')
say cast_out(16).join(' ')
say cast_out(17).join(' ')