27 lines
742 B
Plaintext
27 lines
742 B
Plaintext
V symboltable = Array(‘a’..‘z’)
|
||
|
||
F move2front_encode(strng)
|
||
[Int] sequence
|
||
V pad = copy(:symboltable)
|
||
L(char) strng
|
||
V indx = pad.index(char)
|
||
sequence.append(indx)
|
||
pad = [pad.pop(indx)] [+] pad
|
||
R sequence
|
||
|
||
F move2front_decode(sequence)
|
||
[Char] chars
|
||
V pad = copy(:symboltable)
|
||
L(indx) sequence
|
||
V char = pad[indx]
|
||
chars.append(char)
|
||
pad = [pad.pop(indx)] [+] pad
|
||
R chars.join(‘’)
|
||
|
||
L(s) [‘broood’, ‘bananaaa’, ‘hiphophiphop’]
|
||
V encode = move2front_encode(s)
|
||
print(‘#14 encodes to #.’.format(s, encode), end' ‘, ’)
|
||
V decode = move2front_decode(encode)
|
||
print(‘which decodes back to #.’.format(decode))
|
||
assert(s == decode, ‘Whoops!’)
|