29 lines
473 B
Text
29 lines
473 B
Text
!RosettaCode: Ethiopian Multiplication
|
|
! True BASIC v6.007
|
|
PROGRAM EthiopianMultiplication
|
|
DECLARE DEF FNdouble
|
|
DECLARE DEF FNhalve
|
|
DECLARE DEF FNeven
|
|
|
|
LET x = 17
|
|
LET y = 34
|
|
|
|
DO
|
|
IF FNeven(x) = 0 THEN
|
|
LET p = p + y
|
|
PRINT x,y
|
|
ELSE
|
|
PRINT x," ---"
|
|
END IF
|
|
|
|
LET x = FNhalve(x)
|
|
LET y = FNdouble(y)
|
|
LOOP UNTIL x = 0
|
|
PRINT " ", " ==="
|
|
PRINT " ", p
|
|
GET KEY done
|
|
|
|
DEF FNdouble(A) = A * 2
|
|
DEF FNhalve(A) = INT(A / 2)
|
|
DEF FNeven(A) = MOD(A+1,2)
|
|
END
|