import extensions; import system'routines; import system'collections; extension op { get DigitalRoot() { int additivepersistence := 0; long num := self; while (num > 9) { num := num.Printable.toArray().selectBy:(ch => ch.toInt() - 48).summarize(new LongInteger()); additivepersistence += 1 }; ^ new Tuple(additivepersistence, num.toInt()) } } public program() { new long[]::(627615l, 39390l, 588225l, 393900588225l).forEach:(num) { var t := num.DigitalRoot; console.printLineFormatted("{0} has additive persistence {1} and digital root {2}", num, t.Item1, t.Item2) } }