RosettaCodeData/Task/Ethiopian-multiplication/Object-Pascal/ethiopian-multiplication-1.object
Ingy döt Net d066446780 langs a-z
2013-04-10 22:43:41 -07:00

37 lines
772 B
Text

unit Multiplication;
interface
function Double(Number: Integer): Integer;
function Halve(Number: Integer): Integer;
function Even(Number: Integer): Boolean;
function Ethiopian(NumberA, NumberB: Integer): Integer;
implementation
function Double(Number: Integer): Integer;
begin
result := Number * 2
end;
function Halve(Number: Integer): Integer;
begin
result := Number div 2
end;
function Even(Number: Integer): Boolean;
begin
result := Number mod 2 = 0
end;
function Ethiopian(NumberA, NumberB: Integer): Integer;
begin
result := 0;
while NumberA >= 1 do
begin
if not Even(NumberA) then
result := result + NumberB;
NumberA := Halve(NumberA);
NumberB := Double(NumberB)
end
end;
begin
end.