Move-to-front algorithm: Difference between revisions

Content added Content deleted
(Add Rust implementation)
Line 198: Line 198:
decode(list l)
decode(list l)
{
{
integer c, e, i;
integer c, e;
text al, s;
data al, s;


al = "abcdefghijklmnopqrstuvwxyz";
al = "abcdefghijklmnopqrstuvwxyz";
for (i, e in l) {
for (, e in l) {
s = insert(s, -1, c = al[e]);
s.append(c = al[e]);
al = insert(delete(al, e), 0, c);
al.delete(e).insert(0, c);
}
}


Line 214: Line 214:
{
{
integer c, e;
integer c, e;
text al;
data al;
list l;
list l;


al = "abcdefghijklmnopqrstuvwxyz";
al = "abcdefghijklmnopqrstuvwxyz";
while (c = initial(s)) {
for (, c in b_draft(s)) {
s = delete(s, 0);
l.append(e = al.place(c));
l.append(e = place(al, c));
al.delete(e).insert(0, c);
al = insert(delete(al, e), 0, c);
}
}