39 lines
1 KiB
Text
39 lines
1 KiB
Text
# Project : Negative base numbers
|
|
|
|
negs = [[146,-3],[21102,-3],[10,-2],[11110,-2],[15,-10],[195,-10]]
|
|
for n = 1 to len(negs) step 2
|
|
enc = encodeNegBase(negs[n][1],negs[n][2])
|
|
encstr = showarray(enc)
|
|
dec = decodeNegBase(negs[n+1][1],negs[n+1][2])
|
|
see "" + negs[n][1] + " encoded in base " + negs[n][2] + " = " + encstr + nl
|
|
see "" + negs[n+1][1] + " decoded in base " + negs[n+1][2] + " = " + dec + nl
|
|
next
|
|
|
|
func encodeNegBase(n,b)
|
|
out = []
|
|
while n != 0
|
|
rem = (n%b)
|
|
if rem < 0
|
|
rem = rem - b
|
|
ok
|
|
n = ceil(n/b)
|
|
rem = fabs(rem)
|
|
add(out,rem)
|
|
end
|
|
out = reverse(out)
|
|
return out
|
|
|
|
func decodeNegBase(n,b)
|
|
out = 0
|
|
n = string(n)
|
|
for nr = len(n) to 1 step -1
|
|
out = out + n[nr]*pow(b,len(n)-nr)
|
|
next
|
|
return out
|
|
|
|
func showarray(vect)
|
|
svect = ""
|
|
for n = 1 to len(vect)
|
|
svect = svect + vect[n]
|
|
next
|
|
return svect
|