Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,100 @@
|
|||
#define FAIL -1
|
||||
|
||||
sub mtf( s() as string, i as uinteger )
|
||||
'moves the symbol at index i to the front and shifts preceding ones back
|
||||
dim as string*1 t = s(i)
|
||||
for j as uinteger = i to 1 step -1
|
||||
s(j) = s(j-1)
|
||||
next j
|
||||
s(0)=t
|
||||
end sub
|
||||
|
||||
sub make_symbols( s() as string )
|
||||
'populates an array of strings with the lowercase alphabet
|
||||
for i as uinteger = 97 to 122
|
||||
s(i-97) = chr(i)
|
||||
next i
|
||||
end sub
|
||||
|
||||
function find( s() as string, l as string ) as integer
|
||||
'returns the index of the first occurrence of the symbol l in s()
|
||||
for i as uinteger = 0 to ubound(s)
|
||||
if s(i) = l then return i
|
||||
next i
|
||||
return FAIL
|
||||
end function
|
||||
|
||||
sub encode( s() as string, ind() as uinteger )
|
||||
dim as integer n = ubound(s), i
|
||||
redim as uinteger ind(0 to n)
|
||||
dim as string a(0 to 25)
|
||||
make_symbols(a())
|
||||
for z as uinteger = 0 to n
|
||||
i = find( a(), s(z) )
|
||||
if i = FAIL then
|
||||
print "Uh oh! Couldn't find ";s(z);" in alphabet."
|
||||
end
|
||||
end if
|
||||
mtf( a(), i )
|
||||
ind(z) = i
|
||||
next z
|
||||
end sub
|
||||
|
||||
sub decode( s() as string, ind() as uinteger )
|
||||
dim as integer n = ubound(ind), i
|
||||
redim as string s(0 to n)
|
||||
dim as string a(0 to 25)
|
||||
make_symbols(a())
|
||||
for z as uinteger = 0 to n
|
||||
s(z) = a(ind(z))
|
||||
mtf(a(), ind(z))
|
||||
next z
|
||||
end sub
|
||||
|
||||
sub printarr( s() as string )
|
||||
for i as uinteger = 0 to ubound(s)
|
||||
print s(i);
|
||||
next i
|
||||
print
|
||||
end sub
|
||||
|
||||
sub printind( ind() as integer )
|
||||
for i as uinteger = 0 to ubound(ind)
|
||||
print ind(i);" ";
|
||||
next i
|
||||
print
|
||||
end sub
|
||||
|
||||
sub compose( s() as string, b as string )
|
||||
'turns a string into a zero-indexed array of single letters
|
||||
'The reason we use such arrays is to get them zero-indexed
|
||||
'and to make the point that we could work with multi-char
|
||||
'symbol tables if we wanted to
|
||||
dim as integer n = len(b), i
|
||||
redim as string s(0 to n-1)
|
||||
for i = 0 to n-1
|
||||
s(i) = mid(b, 1+i, 1)
|
||||
next i
|
||||
end sub
|
||||
|
||||
'-----------now the tests-------------
|
||||
redim as string s(0)
|
||||
redim as integer ind(0)
|
||||
|
||||
compose( s(), "broood" )
|
||||
encode( s(), ind() )
|
||||
printind( ind() )
|
||||
decode( s(), ind() )
|
||||
printarr( s() ) : print
|
||||
|
||||
compose( s(), "bananaaa" )
|
||||
encode( s(), ind() )
|
||||
printind( ind() )
|
||||
decode( s(), ind() )
|
||||
printarr( s() ) : print
|
||||
|
||||
compose( s(), "hiphophiphop" )
|
||||
encode( s(), ind() )
|
||||
printind( ind() )
|
||||
decode( s(), ind() )
|
||||
printarr( s() )
|
||||
Loading…
Add table
Add a link
Reference in a new issue