45 lines
1.4 KiB
Plaintext
45 lines
1.4 KiB
Plaintext
Module CheckIt {
|
|
Global All$, nl$
|
|
\\ upgrade to document
|
|
Document All$
|
|
Nl$<={
|
|
}
|
|
Function Encode$(Inp$) {
|
|
Def SymbolTable$="abcdefghijklmnopqrstuvwxyz", Out$=""
|
|
For i=1 to Len(Inp$)
|
|
c$=Mid$(Inp$, i, 1)
|
|
k=Instr(SymbolTable$, c$)
|
|
Insert k, 1 SymbolTable$=""
|
|
Out$=If$(Out$="" -> Quote$(k-1),Quote$(Param(Out$), k-1))
|
|
Insert 1 SymbolTable$=c$
|
|
\\ we use <= for globals
|
|
All$<=Format$(" {0} {1:30} {2}", c$, Out$, SymbolTable$)+nl$
|
|
Next i
|
|
=Out$
|
|
}
|
|
Function Decode$(Inp$) {
|
|
Def SymbolTable$="abcdefghijklmnopqrstuvwxyz", Out$=""
|
|
flush
|
|
Data Param(Inp$)
|
|
While not empty {
|
|
k=Number+1
|
|
c$=Mid$(SymbolTable$, k, 1)
|
|
Out$+=c$
|
|
Insert k, 1 SymbolTable$="" ' erase at position k
|
|
Insert 1 SymbolTable$=c$
|
|
All$<=Format$("{0::-2} {1} {2:30} {3}", k-1, c$, Out$, SymbolTable$)+nl$
|
|
}
|
|
=Out$
|
|
}
|
|
TryThis("broood")
|
|
TryThis("bananaaa")
|
|
TryThis("hiphophiphop")
|
|
ClipBoard All$
|
|
Sub TryThis(a$)
|
|
Local Out$=Encode$(a$)
|
|
Local final$=Decode$(Out$)
|
|
Print final$, final$=a$
|
|
End Sub
|
|
}
|
|
CheckIt
|