Здравствуйте! Есть задача - написать оптимизированную по размеру исполняемого файла без ассемблерных вставок(можно использовать прерывания) программу для заполнения матрицы по спирали для случаев от 1 до 9. Задачу решил и написал самый оптимизированный алгоритм, который я смог из себя выдавить. Скажите, что ещё здесь можно оптимизировать или уже стоит приступать к замене ввода на безэховый и вывода через прерывания? Может от каких переменных избавиться? Или циклы оптимизировать можно?
program spiral; var m: array [1..9, 1..9] of word; //Сама матрица n: word; //Размерность матрицы i: word; //Индексы матрицы j: word; c: word; //Вводимое число l: word; //Длина стороны s: integer; //Флаг меняющийся между значениями -1 и 1 t: word; //Координата поворота p: ^word; //Указатель на координаты begin readln(n); l := n; t := n; s := 1; i := 1; p := @j; repeat p^ := p^ + s; c := c + 1; //Если достигнута точка поворота if p^ = t then begin //Меняем изменяемую координату if p = @j then begin p := @i; l := l - 1; end else begin p := @j; s := -s; end; //Узнаём координату следующего поворота t := p^ + s*(l); end; m[i,j] := c; until l = 0; //Обычный вывод for i:=1 to n do begin for j:=1 to n do write(m[i,j]:3); writeln; end; end.