Solution (source code)

= Solution

A binary code assigns a finite binary word $c_k$ to each source symbol $x_k$. In the ordinary unframed convention these <codewords> are nonempty. It is <uniquely decodable code>[uniquely decodable] when <concatenation> gives an <injective> map from finite symbol strings to <bit> strings:
$$
\boxed{c_{i_1}\cdots c_{i_r}=c_{j_1}\cdots c_{j_s}\quad\Longrightarrow\quad r=s\text{ and }i_t=j_t\text{ for all }t.}
$$
The decoder can recover the entire symbol sequence without being told where <codewords> end. This is stronger than merely assigning distinct words to individual symbols.