RosettaCodeData/Task/Ethiopian-multiplication/AWK/ethiopian-multiplication.awk
Ingy döt Net 764da6cbbb CDE
2013-04-10 16:57:12 -07:00

31 lines
349 B
Awk

function halve(x)
{
return int(x/2)
}
function double(x)
{
return x*2
}
function iseven(x)
{
return x%2 == 0
}
function ethiopian(plier, plicand)
{
r = 0
while(plier >= 1) {
if ( !iseven(plier) ) {
r += plicand
}
plier = halve(plier)
plicand = double(plicand)
}
return r
}
BEGIN {
print ethiopian(17, 34)
}