RosettaCodeData/Task/Move-to-front-algorithm/11l/move-to-front-algorithm.11l

27 lines
742 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
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!)