IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Оптимальный алгоритм спиральной матрицы
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской
Реальное имя: Кирилл Мамонов
Компонентный Паскаль: Сторонник
Free Pascal: Сторонник
Turbo Pascal: Установлен

Репутация: -  0  +


Здравствуйте! Есть задача - написать оптимизированную по размеру исполняемого файла без ассемблерных вставок(можно использовать прерывания) программу для заполнения матрицы по спирали для случаев от 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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Akusov   Оптимальный алгоритм спиральной матрицы   20.12.2017 5:31
OCTAGRAM   Какая-то довольно специфическая оптимизация. На фо…   20.12.2017 14:11
Халявов   Интересно, в каком вузе дают подобные программы? Н…   22.12.2017 2:32
Akusov   Интересно, в каком вузе дают подобные программы? …   24.12.2017 2:13
Akusov   Как думаете? Вообще реально написать такую програм…   24.12.2017 4:18
Халявов   Моя после компиляции без всяких особых натроек ком…   24.12.2017 5:42
Akusov   Моя после компиляции без всяких особых натроек ко…   24.12.2017 5:56
Халявов   Понятно, Ассемблер всё объясняет. А то задача выгл…   24.12.2017 6:15
Akusov   Понятно, Ассемблер всё объясняет. А то задача выг…   24.12.2017 6:32
OCTAGRAM   Пытался использовать модуль dos с его Intr и MsDos…   27.12.2017 5:33
Akusov   В общем. Немного модифицировал и обнаружил, что те…   24.12.2017 8:40
Akusov   Как ни странно - я смог ужать программу ещё сильн…   24.12.2017 10:41
Akusov   Пораскинув мозгами, смог ужать итоговый екзешник д…   25.12.2017 23:36
Akusov   Я изучив exe-шник - обнаружил длиннющую строку с и…   26.12.2017 3:46
Akusov   Последние вести с полей. Уменьшил прогу до 1936 ба…   26.12.2017 5:14
Федосеев Павел   Можно ещё чуток, если заменить 1. bx := bx + 1; на…   27.12.2017 0:24
Akusov   Можно ещё чуток, если заменить 1. bx := bx + 1; н…   27.12.2017 3:14
Akusov   Решил попробовать компилятор Turbo Pascal 5.5 В ко…   28.12.2017 11:55
Халявов   Turbo Pascal 5.5 В командной строке набираю TPC SP…   28.12.2017 12:05
Akusov   Turbo Pascal 5.5 В командной строке набираю TPC S…   28.12.2017 17:11
OCTAGRAM   Можно ещё попробовать директивами отключить эмуляц…   28.12.2017 18:04
Akusov   Можно ещё попробовать директивами отключить эмуля…   29.12.2017 4:21
Akusov   Уже 1680. Нашёл просто дичайшую неоптимизированнос…   29.12.2017 4:45


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 3:34
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name