Ethiopian multiplication: Difference between revisions

Added Oz example.
(added factor implemenation)
(Added Oz example.)
Line 1,060:
 
disp(ethiopicmult(17, 34, true))</lang>
 
=={{header|Oz}}==
<lang oz>declare
fun {Halve X} X div 2 end
fun {Double X} X * 2 end
fun {Even X} {Abs X mod 2} == 0 end %% standard function: Int.isEven
 
fun {EthiopicMult X Y}
X >= 0 = true %% assert: X must not be negative
Rows = for
L in X;L>0;{Halve L}
R in Y;true;{Double R}
collect:C
do
{C L#R}
end
OddRows = {Filter Rows fun {$ L#_} {Not {Even L}} end}
in
{FoldL OddRows fun {$ Z _#R} Z+R end 0}
end
in
{Show {EthiopicMult 17 34}}</lang>
 
=={{header|Perl}}==
Anonymous user