|
def halve: (./2) | floor;
|
|
|
|
def double: 2 * .;
|
|
|
|
def isEven: . % 2 == 0;
|
|
|
|
def ethiopian_multiply(a;b):
|
|
def pairs: recurse( if .[0] > 0
|
|
then [ (.[0] | halve), (.[1] | double) ]
|
|
else empty
|
|
end );
|
|
reduce ([a,b] | pairs
|
|
| select( .[0] | isEven | not)
|
|
| .[1] ) as $i
|
|
(0; . + $i) ;
|