Hi guys! Since it's getting close to the next challenge. I thought I'd post up my solution for last month's challenge.
table = [1, 2, 4, 8, 16, 32, 64, 128]
rtable = [128, 64, 32, 16, 8, 4, 2, 1]
//TASK #1
task1_n = random(255)
function _abs(x)
r = 0
if x < 0 then r = (~x) + 1
else r = x endif
return r
function extract_bin(n)
r = "00000000"
for i = 0 to 8 loop
if n & rtable[i] then r[i] = "1"
else r[i] = "0" endif
repeat
return r
function reverse_bin(n)
r = 0
for i = 0 to 8 loop
if n & table[i] then
r = r | rtable[i]
endif
repeat
return r
print(str(task1_n) + " " + extract_bin(task1_n) + " -> " + str(reverse_bin(task1_n)) + " " + extract_bin(reverse_bin(task1_n)))
//TASK #2
task2_n1 = random(255)
task2_n2 = random(255)
is_negative1 = random(2)
is_negative2 = random(2)
function mul(a, b)
r = 0
sign = 0
loops = 0
if a == 0 or b == 0 then r = 0 else
if a == 1 then r = b else
if a == -1 then r = -b else
if b == 1 then r = a else
if b == -1 then r = -a else
if a < 0 or b < 0 then sign = 1 endif
if a < 0 and b < 0 then sign = 0 endif
a = _abs(a)
b = _abs(b)
for i = 0 to 8 loop
if b & table[i] then
r += a
endif
a = a << 1
loops += 1
repeat
endif endif endif endif endif
if sign then r = -r endif
res = [r, loops]
return res
if is_negative1 then task2_n1 = -task2_n1 endif
if is_negative2 then task2_n2 = -task2_n2 endif
task2_res = mul(task2_n1, task2_n2)
print(str(task2_n1) + " x " + str(task2_n2) + " = " + str(task2_res[0]) + " in " + str(task2_res[1]))