Move-to-front algorithm: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 193:
'bananaaa' encodes to 1 1 13 1 1 1 0 0. This decodes to 'bananaaa'. Correct!
'hiphophiphop' encodes to 7 8 15 2 15 2 2 3 2 2 3 2. This decodes to 'hiphophiphop'. Correct!</pre>
 
=={{header|Aime}}==
<lang aime>text
decode(list l)
{
integer c, e, i;
text al, s;
 
al = "abcdefghijklmnopqrstuvwxyz";
for (i, e in l) {
s = insert(s, -1, c = al[e]);
al = insert(delete(al, e), 0, c);
}
 
s;
}
 
list
encode(text s)
{
integer c, e;
text al;
list l;
 
al = "abcdefghijklmnopqrstuvwxyz";
while (c = initial(s)) {
s = delete(s, 0);
l.append(e = place(al, c));
al = insert(delete(al, e), 0, c);
}
 
l;
}
 
integer
main(void)
{
integer i;
text s;
 
for (i, s in list("broood", "bananaaa", "hiphophiphop")) {
list l;
 
l = encode(s);
l.ucall(o_, 1, " ");
o_(": ", decode(l), "\n");
}
 
0;
}</lang>
{{out}}
<pre> 1 17 15 0 0 5: broood
1 1 13 1 1 1 0 0: bananaaa
7 8 15 2 15 2 2 3 2 2 3 2: hiphophiphop</pre>
 
=={{header|ALGOL 68}}==
Anonymous user