41 lines
773 B
Text
41 lines
773 B
Text
$ENTRY Go {
|
|
= <Show 'broood'>
|
|
<Show 'bananaaa'>
|
|
<Show 'hiphophiphop'>;
|
|
};
|
|
|
|
Alph {
|
|
= 'abcdefghijklmnopqrstuvwxyz';
|
|
};
|
|
|
|
Show {
|
|
e.X, <Encode (<Alph>) e.X>: e.Enc,
|
|
<Decode (<Alph>) e.Enc>: e.X
|
|
= <Prout e.X ' -> ' e.Enc ' -> ' e.X>;
|
|
e.X = <Prout 'Result of decode not equal to input'>;
|
|
};
|
|
|
|
Encode {
|
|
(e.Alph) = ;
|
|
(e.Alph) s.C e.X =
|
|
<Lookup s.C e.Alph>
|
|
<Encode (<MoveToFront s.C e.Alph>) e.X>;
|
|
};
|
|
|
|
Decode {
|
|
(e.Alph) = ;
|
|
(e.Alph) s.I e.X, <Item s.I e.Alph>: s.C =
|
|
s.C <Decode (<MoveToFront s.C e.Alph>) e.X>;
|
|
};
|
|
|
|
Lookup {
|
|
s.C e.X s.C e.Y, <Lenw e.X>: s.L e.X = s.L;
|
|
};
|
|
|
|
Item {
|
|
s.N e.X, <First <Add 1 s.N> e.X>: (e.Y s.C) e.Z = s.C;
|
|
};
|
|
|
|
MoveToFront {
|
|
s.C e.X s.C e.Y = s.C e.X e.Y;
|
|
};
|