27 lines
742 B
Text
27 lines
742 B
Text
|
|
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!’)
|