RosettaCodeData/Task/Digital-root/Elena/digital-root.elena

32 lines
697 B
Plaintext

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<int,int>(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)
}
}