RosettaCodeData/Task/Casting-out-nines/Ring/casting-out-nines.ring
2018-08-17 15:15:24 +01:00

37 lines
825 B
Text

# Project : Casting out nines
co9(1, 10, 99, [1,9,45,55,99])
co9(1, 10, 1000, [1,9,45,55,99,297,703,999])
func co9(start,base,lim,kaprekars)
c1=0
c2=0
s = []
for k = start to lim
c1 = c1 + 1
if k % (base-1) = (k*k) % (base-1)
c2 = c2 + 1
add(s,k)
ok
next
msg = "Valid subset" + nl
for i = 1 to len(kaprekars)
if not find(s,kaprekars[i])
msg = "***Invalid***" + nl
exit
ok
next
showarray(s)
see "Kaprekar numbers:" + nl
showarray(kaprekars)
see msg
see "Trying " + c2 + " numbers instead of " + c1 + " saves " + (100-(c2/c1)*100) + "%" + nl + nl
func showarray(vect)
see "{"
svect = ""
for n = 1 to len(vect)
svect = svect + vect[n] + ", "
next
svect = left(svect, len(svect) - 2)
see svect + "}" + nl