Итак, нужно, чтобы любая троичная последовательность декодировалась однозначно. Смотрим на варианты: 0, 01, 02, 10 Если выбрать кодом 0, декодировка будет происходить однозначно (ни в одном из остальных кодов нуля нет). А если выбирать коды из двух цифр - опять-таки всё будет однозначно, т.к. все коды букв будут иметь одинаковую длину (например, для декодировки 1121222202 надо будет разбить строку на подстроки длины 2: 11 21 22 22 02, и расшифровать каждую подстроку). Без условия на длину слова подошли бы они все.
Нужен код наименьшей длины, поэтому в ответы пойдёт 0.
var a: array [1..25] of integer; ar: array [1..5, 1..5] of integer; i, j, k, n, m, x: integer;
begin write('n='); readln(n); writeln('Заполните массив:'); for i := 1 to n do read(a[i]); for i := 1 to n do for j := i + 1 to n do if a[i] > a[j] then begin x := a[i]; a[i] := a[j]; a[j] := x; end; writeln('Отсортированный массив: '); for i := 1 to n do write(a[i], ' '); writeln; n := floor(sqrt(n)); m := sqr(n); writeln('Двумерный массив: '); for k := 1 to m do begin x := (k - 1) div n; j := n - x; if x mod 2 = 0 then i := n * (x + 1) + 1 - k else i := k - n * x; ar[i, j] := a[k] end; for i := 1 to n do begin for j := 1 to n do write(ar[i, j]:4); writeln end end.
декомпилятором