RosettaCodeData/Task/Ethiopian-multiplication/Rascal/ethiopian-multiplication.rascal
Ingy döt Net d066446780 langs a-z
2013-04-10 22:43:41 -07:00

18 lines
277 B
Text

import IO;
public int halve(int n) = n/2;
public int double(int n) = n*2;
public bool uneven(int n) = (n % 2) != 0);
public int ethiopianMul(int n, int m) {
result = 0;
while(n >= 1) {
if(uneven(n))
result += m;
n = halve(n);
m = double(m);
}
return result;
}