15 lines
267 B
Text
15 lines
267 B
Text
func double (n) { n << 1 }
|
|
func halve (n) { n >> 1 }
|
|
func isEven (n) { n&1 == 0 }
|
|
|
|
func ethiopian_mult(a, b) {
|
|
var r = 0
|
|
while (a > 0) {
|
|
r += b if !isEven(a)
|
|
a = halve(a)
|
|
b = double(b)
|
|
}
|
|
return r
|
|
}
|
|
|
|
say ethiopian_mult(17, 34)
|