<< Вернуться на главную

СОТОМАНИЯ

Итак, мы начинаем очередной конкурс программистов. На этот раз мы будем бороться за бесперебойную сотовую связь.

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

Условия конкурса следующие:

В некотором городе (карта прилагается) внедряется новый стандарт сотовой связи (ну скажем 100G) и для внедрения построено несколько сотовых вышек (пока ровно 4, но это только пока). К каждой вышке может быть подключено 50 пользователей этой самой распрекрасной сотовой связи. А всего пользователей пока только 200.

Игрушку для ознакомления можно скачать тут.

Пользователи все разные. Есть среди них "молчуны" позвонят пару раз в день и все, а есть активные пользователи постоянно сидящие в соцсетях и интернете. Мало того, они на месте не сидят, а "шарахаются" где ни попадя по всему городу! Их поведение вообще трудно предсказать. Кто-то на месте сидит сидит, а потом вдруг подхватился, и его понесло куда-то. А кто-то круги по городу нарезает (не иначе таксист). Ну прямо как настоящие пользователи :-)

Ну а самое плохое в том, что условия приема напрямую влияют на качество связи. Чем пользователь дальше от вышки, тем слабее связь, больше сбоев и тем сильнее падает скорость передачи. Да еще и перекоммутация пользователя с вышки на вышку очень затратная операция. Вот если к примеру пользователь за один ход может взять в пределах еденицы трафика, то переключение сразу дает минус 10! Мало того в ход, когда пользователь переключается, он не качает ничего даже если захочет.

Задача конкурса - за тысячу ходов обеспечить максимальное количество очков трафика.

Как всегда за месяц предлагается освоить управление, попробовать максимально улучшить показатели. Ну а на очном этапе милости просим в СЮТ с готовыми исходниками и собственными идеями. Обещаем как минимум усложнить жизнь. Для того чтоб конкурсанты не расслаблялись, очень хочется смоделировать какую нибудь экстремальную ситуацию. Пожар, потоп, ну или новый год. Вы пробовали друзьям в новый год звонить? Почище потопа будет...

В конкурсе поддержано несколько оболочек и языков программирования. В зависимости от того какая оболочка вам более комфортна вы можете выбрать то что вам ближе. А почему именно такой выбор? Да просто потому, что именно эти оболочки официально куплены нами в СЮТ. А значит, на очном этапе будет одна из этих оболочек. Если у вас другие версии, то вы можете адаптировать проект под вашу оболочку. Это легко делается, потому что основные функции вынесены в DLL. Но учтите, что на очном этапе мы можем обеспечить вам только указанные версии!

Для участия в конкурсе качаете готовую затравку
Версия для LAZARUSа.
Версия для DELPHI 7.
Версия для С++BUILDER 9.

Качаете подходящий вам проект, распаковываете его, и смотрите. Там есть подпрограмма пользователя (USER_PROC), которая вызывается перед каждым ходом. Вот в идеале вы можете править только ее. Желательно в другие места затравок не лазить, а то может проект рассыпасться! Хотя если очень хочется, и вы понимаете что там делается..... Например, можно добавить дополнительные глобальные переменные (они вам наверняка понадобятся).

Для управления существует только одна подпрограмма, которая называется "M_COMM" ей передается три параметра номер сотовой вышки (от 1 до 4), номер канала на этой вышке (от 1 до 50), и номер пользователя (от 1 до 200). Подпрограмма коммутирует все как сказано и с этого момента пользователь подключен!
ВНИМАНИЕ! Если вы ошиблись в номере вышки, канала или пользователя, то ничего страшного не произойдет, но коммутация не состоится!

Подпрограммы "M_BEGIN", "M_HOD" являются служебными, и трогать их категорически не рекомендуется!.

А вот например с подпрограммой "M_OTRIS" при желании можно поэкспериментировать. Там ей передается параметр, от битов которого зависит что она станет рисовать. Отдельно карту, вышки, пользователей и их связи (пример можно посмотреть в ознакомительной игрушке). Предполагалось, что так можно сократить время работы программы, однако на современных компах все рисуется настолько быстро, что похоже это не имеет смысла....хотя может у вас дома очень очень старый и медленный компьютер...

Ну а для того, чтобы вы могли как-то анализировать ситуацию предусмотрены информационные подпрограммы и функции
PROCEDURE M_GET_USER_INF(N:INTEGER;VAR X,Y:INTEGER;VAR SC:REAL); - Получить данные о пользователе "N" (координаты и сколько он очков накачал)
PROCEDURE M_GET_SOT_INF(N:INTEGER;VAR X,Y:INTEGER); - получить координаты вышки "N"
FUNCTION M_GET_HOD:INTEGER; - Получить номер текущего хода
FUNCTION M_GET_SCORE:REAL; - Получить текущие очки (хотя их и так отображает)

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

Месяц всем на ознакомление с задачей, наработки своих методик и подпрограмм, тестирование. А в новогодние каникулы, в СЮТе очный этап. Не забудьте перд тем как сесть за праздничный стол, заглянуть на сайт и поинтересоваться конкретно временем и датой. Вдруг что-то поменяется :-)

ВНИМАНИЕ!
Все желающие регистрируются тут

На сегодня зарегистрировались:

Фамилия и имя Школа Класс Предпочитаемая оболочка