ВНИМАНИЕ ВНИМАНИЕ!

Станция Юных Техников, при поддержке компьютерной фирмы

"ТЕТАС"
и интернет провайдера
"www.9-ka.ru"
Организует традиционный конкурс программистов в рамках ежегодного, новогоднего компьютерного фестиваля.

ВНИМАНИЕ! для регистрации надо заполнить бланк регистрации
Бланк регистрации
и послать по адресу
starworld@ksut.krasnoyarsk.su

И желательно поторопитсья с регистрацией и вопросами, а то через неделю мне в командировку пора.

В прошлом году народ жаловался, что всем осточертели лабиринты. Хоть с "крабами" хоть с "удавами". Ну что-ж пойдем на встречу пожеланиям трудящихся :-)

Итак условия задачи новогоднего конкурса программистов

Имеется дом, в доме 10 этажей, куча жильцов и один лифт. Вот программу для управления этим самым лифтом вам и предстоит написать. (точнее как всегда мы напишем программу за вас, но она очень плохо работает :-), А вам необходимо ее усовершенствовать).
Лифт управляется очень просто, имеется всего 3-и подпрограммы для управления:

1) L_UP      - Подпрограмма подьема на этаж выше. (без параметров)

2) L_DOWN    - Подпрограмма спуска на один этаж. (без параметров)

3) L_STOP(N) - Остановить лифт и открыть двери. А теперь ВНИМАНИЕ! Цифра, 
             передаваемая данной подпрограмме нужна для команд людям на этаже.
         если она =1, то в лифт зайдут те люди, которые едут наверх.
                  =2, в лифт зайдут люди едущие вниз.
         любое другое значение - в лифт просто зайдут люди в порядке очереди.
Информация о всех параметрах лифта хранится в специальной структуре, следующего содержания:
T_STRUK=RECORD
M_Z, {Массив заявок в лифте}
M_UP, {Массив кнопок "ВВЕРХ" на этажах}
M_DOWN:T_M; {Массив кнопок "ВНИЗ" на этажах}
TEK_ET:BYTE; {текущий этаж}
BALL:INTEGER; {баллы}
KOL_L:INTEGER; {количество людей в лифте}
HOD:INTEGER; {Текущий номер хода}
END;


M_Z   - Массив заявок в кабине лифта. Номер элемента указывает на этаж:
0 - на этот этаж нет заявки 1 - есть заявка Тоесть например, если в массиве будет (0 1 1 0 0 0 0 0 0), то это означает, что люди, находящиеся в кабине лифта, едут на 2-ой и третий этажи. M_UP - Массив кнопок "вверх" на всех этажах. Номер элемента указывает на этаж:
Например (1 0 1 0 0 0 0 0 0 0) На первом и третьем этажах стоят люди, которые хотят ехать вверх. M_DOWN - Массив кнопок "Вниз" на всех этажах Номер элемента указывает на этаж:
Например (0 0 0 0 0 0 0 0 0 1) На последнем этаже стоят люди, которые хотят ехать вниз. Если вы остановились на этаже, то заявки этого этажа сбрасываются
ВНИМАНИЕ! сколько людей ждет вас на этаже неизвестно (как в настоящем лифте). Ну вот как тут построить оптимальную программу? :-)
Но что поделать, вот такой он, этот коварный лифт!
При остановке на этаже, кнопки вызова этого этажа сбрасываются, но как только лифт тронется, если люди остались на этаже, то опять За перевозку пассажира на один этаж, вы получаете одно очко. Если вы провезете пассажира мимо этажа, на который он хотел попасть (и не остановитесь). То получаете минус одно очко (ну что поделать, злобные и мстительные у нас пассажиры).
Насколько удачно будет действовать ваша программа, на столько больше очков вы получите.

СДЕЛАЕМ НАШ ЛИФТ САМЫМ УМНЫМ!

Необходимо:
За ограниченное количество ходов (пока предложено 1000) Перевести максимальное количество пассажиров на наибольшее расстояние. Победитель определяется по макимуму очков, набранных за время работы программы.

И еще, ваша программа не должна работать более 5 минут на 1000 ходов! Так что если вы захотите применить какие-то суперсложные алгоритмы, та вам прийдется заранее закладывать в них возможность уменьшения времени работы!

Будут две номинации,
1) Школьники до 9 класса (включительно)
2) Школьники 10-11 класс
По обоим номинациям за призовые места предполагаются отдельные призы. :-)
Переговоры со спонсорами еще ведутся, поэтому призы будут, но какие еще посмотрим.
Как всегда конкурс проходит в два этапа. Сначала до самого нового года идет заочный этап, в котором все желающие пишут программы и сообщают нам на сайт о своих успехах. Соответственно мы ведем таблицу рейтингов, в которой каждый может посмотреть свои и чужие результаты.
.Ну а сразу после нового года (во время новогоднего, компьютерного фестиваля) минимум 10 а максимум 20 участников будут приглашены со своими программами на очный этап, где и будет определен победитель. Внимание! во время очного этапа условия игры будут слегка изменены! Вам прийдется свои программы немножко подправить. Это сделано для того, чтобы убедиться, что ваши программы действительно написаны вами а не кем-то другим!
Однако по сравнению с предыдущими годами есть кое-что новенькое. На сайте будут показываться только места участников а не их очки. Уж очень пугливые конкурсанты пошли. Увидев высокие результаты на сайте у других участников, пугаются и опускают руки :-). Не забывайте, главное - это очный этап. Заочный - просто тренировка и введение в проблему.

Администрация СЮТ и жюри конкурса желает вам всяческих успехов. Вопросы можно задавать по адресу "Звездного мира" starworld@ksut.krasnoyarsk.su


Программное обеспечение будет предназначено для нескольких языков программирования

Предполагается, что будет
PASCAL версий 5.5 и 7.0
VB-5
Если сильно надо, то можно еще будет сделать "С" (но исключительно по просьбам трудящихся)

А пока уже готова первая версия для DELPHI5 и CBUILDER6.
Проект для DELPHI5
Проект для CBUILDER6(не рекомендовано)
Проект для TP-5
Проект для TP-7
Проект для BC 3.1
Проект для VB 5
для MS VC(версия для MS Visual Studio .NET 2002 и выше) (не рекомендовано)
для MS VC(исходники для всех остальных версий компилятора)(не рекомендовано)

А это просто игрушка, лифт с ручным управлением (для изучения вопроса)

Огромная просьба хорошенько погонять Все это, чтобы выловить баги до того, как приступим к работе. О замеченных недостатках, и просто о предложениях просьба писать на наш адрес.

Как всегда, все написано за вас :-) Нужно просто "подправить" программу, оптимизировать управление для получения максимального количества очков.

В полном соответствии с нашими принципами, задача не имеет однозначного решения. Поэтому все находятся в равных условиях. Тот, кто сможет придумать самый успешный алгоритм, получит больше очков.

Со своей стороны гарантируем абсолютно беспристрастное судейство :-) Кто заработает наибольшее число очков, тот и станет победителем! Именно грамотный алгоритм вашей программы и есть 90 процентов успеха. А еще рекомендуем посмотреть страничку "прошедшие конкурсы". Там можно понять основные традиции наших конкурсов.

Отвечать постараемся побыстрей, но уж как получится, до нового года врямя еще есть :-).


НА СЕГОДНЯ ЗАРЕГИСТРИРОВАЛИСЬ:

Участник класс язык

Козырев Владимир - 9 Pascal 7.0
Городилов Михаил - 11 Delphi 5.0
Порпылев Максим - 11 Delphi 5.0
Будников Дмитрий - 11 Delphi 5.0
Иванов Александр - 11 Pascal 7.0
Сорокин Дмитрий - 11 Pascal 5.0
Воробъев Семен - 9 VB 5.0
Нечвидов Павел - 9 VB 5.0
Кукушкин Денис - 9 VB 5.0
Назаренко Павел - 9 Pascal 5.0
Русанов Иван - 9 Pascal 5.0

ВНЕ КОНКУРСА ВЫСТУПАЮТ:

Участник очки язык комментарий

Challenger J.D. 524 Delphi 7.0 Студент СибГАУ
Дегтярев С.И. - 524 Delphi 5 Выпускник
Дубенко В.А. - 499 Pascal 5.0 Прохожий
Тест1 - 80 Pascal 5.0 Тестовая программа
Тест2 - 126 Delphi 5.0 Тестовая программа