Jump to content

Ethiopian multiplication: Difference between revisions

add AutoHotkey
(add AutoHotkey)
Line 49:
*[http://www.ncetm.org.uk/blogs/3064 Ethiopian multiplication]
*[http://www.bbc.co.uk/dna/h2g2/A22808126 Russian Peasant Multiplication]
 
=={{header|AutoHotkey}}==
<lang AutoHotkey>MsgBox % Ethiopian(17, 34) "`n" Ethiopian2(17, 34)
 
; func definitions:
half( x ) {
return x >> 1
}
 
double( x ) {
return x << 1
}
 
isEven( x ) {
return x & 1 == 0
}
 
Ethiopian( a, b ) {
r := (isEven(a) ? 0 : b)
Loop
{
a := half(a)
b := double(b)
if !isEven(a)
r += b
if (a = 1)
break
}
return r
}
 
; or a recursive function:
Ethiopian2( a, b, r = 0 ) { ;omit r param on initial call
return a==1 ? r+b : Ethiopian2( half(a), double(b), !isEven(a) ? r+b : r )
}</lang>
 
=={{header|AWK}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.