RosettaCodeData/Task/Digital-root/Wren/digital-root.wren

31 lines
659 B
Plaintext

import "./fmt" for Fmt
var sumDigits = Fn.new { |n|
var sum = 0
while (n > 0) {
sum = sum + (n%10)
n = (n/10).floor
}
return sum
}
var digitalRoot = Fn.new { |n|
if (n < 0) Fiber.abort("Argument must be non-negative.")
if (n < 10) return [n, 0]
var dr = n
var ap = 0
while (dr > 9) {
dr = sumDigits.call(dr)
ap = ap + 1
}
return [dr, ap]
}
var a = [1, 14, 267, 8128, 627615, 39390, 588225, 393900588225]
for (n in a) {
var res = digitalRoot.call(n)
var dr = res[0]
var ap = res[1]
Fmt.print("$,15d has additive persistence $d and digital root of $d", n, ap, dr)
}