Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,69 @@
|
|||
CHAR ARRAY digits="0123456789abcdefghijklmnopqrstuvwxyz"
|
||||
|
||||
PROC CheckBase(BYTE b)
|
||||
IF b<2 OR b>digits(0) THEN
|
||||
PrintE("Base is out of range!")
|
||||
Break()
|
||||
FI
|
||||
RETURN
|
||||
|
||||
PROC Encode(CARD v BYTE b CHAR ARRAY s)
|
||||
CARD d
|
||||
BYTE i,len
|
||||
CHAR tmp
|
||||
|
||||
CheckBase(b)
|
||||
len=0
|
||||
DO
|
||||
d=v MOD b
|
||||
len==+1
|
||||
s(len)=digits(d+1)
|
||||
v==/b
|
||||
UNTIL v=0
|
||||
OD
|
||||
s(0)=len
|
||||
|
||||
FOR i=1 to len/2
|
||||
DO
|
||||
tmp=s(i)
|
||||
s(i)=s(len-i+1)
|
||||
s(len-i+1)=tmp
|
||||
OD
|
||||
RETURN
|
||||
|
||||
CARD FUNC Decode(CHAR ARRAY s BYTE b)
|
||||
CARD res
|
||||
BYTE i,j,found
|
||||
|
||||
CheckBase(b)
|
||||
res=0
|
||||
FOR i=1 TO s(0)
|
||||
DO
|
||||
found=0
|
||||
FOR j=1 TO digits(0)
|
||||
DO
|
||||
IF digits(j)=s(i) THEN
|
||||
found=1 EXIT
|
||||
FI
|
||||
OD
|
||||
IF found=0 THEN
|
||||
PrintE("Unrecognized character!")
|
||||
Break()
|
||||
FI
|
||||
res==*b
|
||||
res==+j-1
|
||||
OD
|
||||
RETURN (res)
|
||||
|
||||
PROC Main()
|
||||
CARD v=[6502],v2
|
||||
BYTE b
|
||||
CHAR ARRAY s(256)
|
||||
|
||||
FOR b=2 TO 23
|
||||
DO
|
||||
Encode(v,b,s)
|
||||
v2=Decode(s,b)
|
||||
PrintF("%U -> base %B %S -> %U%E",v,b,s,v2)
|
||||
OD
|
||||
RETURN
|
||||
Loading…
Add table
Add a link
Reference in a new issue