Турнир проходил в первый день Soft-Парада 24 апреля в выставочном центре «Сибирь».

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

Участники выбрали такие языки программирования:

  • C# — 5 человек;
  • Delphi — 5 человек;
  • PHP — 4 человека;
  • Java — 1 человек.

И следующие СУБД:

  • MySQL — 6;
  • MS SQL Server — 5;
  • MS Access — 2.

Победители

Участники, набравшие болеее трех баллов:

МестоУчастникБаллыОрганизацияЯзык, СУБД
1 местоЛучинин Михаил Олегович19Гимназия № 11PHP, MySQL
2 местоЛапаев Денис Викторович13ИМ СФУPHP, MySQL
3 местоСавченко Георгий Викторович11ИКИТ СФУC#, MS SQL Server
4 местоКудашов Николай Евгеньевич10,5ИМ СФУ, 2КБC#, MySQL
5-6 местоСтаролетов Сергей Михайлович8АлтГТУJava, MySQL
5-6 местоШушерин Виталий Викторович8ИКИТ СФУPHP, MySQL
7 местоЦветцих Денис Валерьевич6,5ИКИТ СФУC#, MS SQL Server
8 местоЦветцих Андрей Валерьевич6ИКИТ СФУC#, MS SQL Server

Условие задачи

Луноход еженедельно исследует участок Луны XxY метров (X, Y <= 200) и сохраняет данные в файлы moonN.txt, где N — номер недели (N <= 30). Для каждого квадратного метра на каждую неделю луноход определяет следующую информацию: температура, плотность грунта, фотография (JPEG, может отсутствовать). Структура файла:
x;y;температура;плотность;путь_к_фото x;y;температура;плотность;путь_к_фото и т. д. для каждого квадратного метра
Одна строка файла соответствует одному квадратному метру участка с координатами (x, y). Размеры участка определяются по максимальным значениям x и y (размеры для всех недель одинаковы, нумерация координат с 1). Температура и плотность округлены до целых значений. Путь к фотографиям задан относительно каталога с исходными файлами (например, photos/image1.jpg). Разработать программу со следующим функционалом:
  1. Импорт исходных данных из файлов в СУБД (можно выполнить в виде отдельной программы). Ранее загруженные данные при импорте должны удаляться. 3 балла
  2. Выборка данных и отображение результатов в табличном виде. Фильтры: неделя, координата x, координата y. Если какой-то параметр не указан пользователем, то выводить данные для всех возможных значений поля (указывается, по крайней мере, 1 параметр). Сортировка: по возрастанию значения выражения (неделя * 1000000 + x * 1000 + y). Выводить максимум 100 первых результатов, строки таблицы нумеровать. Параметры для вывода: неделя, x, y, температура, плотность грунта, ссылка (кнопка) для отображения фотографии. 4 балла, время 10 сек
  3. Определить наименьшую температуру, которая зафиксирована на указанной пользователем неделе. Определить количество кв. метров участка с этой температурой. 1 балл, время 10 сек
  4. Луноход изредка даёт сбой и выдает одну и ту же фотографию для разных участков (имена файлов при этом разные). Найти все такие дублирующиеся фотографии. 5 баллов, время 10 сек
  5. Найти наиболее подходящий участок для создания подземной базы на Луне размером 10x10 м. Средняя плотность грунта участка для базы должна быть наиболее близкой к заданной пользователем. При расчетах использовать усредненные значения плотности за все недели. Если найдено несколько таких участков, то вывести любой из них. 6 баллов, время 10 сек
  6. Вывести карту температур в графическом виде на заданную пользователем неделю. Каждому пикселю соответствует один метр участка. Цвета пикселей меняются от синего (самая низкая температура) до красного (самая высокая температура). Красная и синяя компоненты цветов меняются линейно в диапазоне (0, 255). 6 баллов, время 10 сек
Если лимит времени превышен не более чем в 2 раза, то штраф 50% баллов (за тест).

Тесты

Исходные данные для тестирования: sp2009_turnir_data.zip (19 Мб). Тесты (для участников и жюри): sp2009_turnir_tests.doc (350 кб)

Вариант решения

Вариант решения на PHP с использованием СУБД MySQL:

Параметры СУБД и путь к каталогу с данными и изображениями указываются в файле menu.php (каталог с данными и изображениями следует разместить в том же каталоге, где и PHP-скрипты). Решение тестировалось в следующей среде: PHP 5, MySQL 5, веб-сервер Apache 2, ОС Windows XP.