В 2008 году в рамках Soft-Парада впервые был организован так называемый турнир блиц-проектов. К участию приглашались все желающие в возрасте до 25 лет (включительно).
Турнир проходил во второй день Soft-Парада 19 апреля в выставочном центре «Сибирь». Регистрация началась в 09:00. Всего зарегистрировалось 18 человек.
В качестве инструментария участникам было предложено следующее программное обеспечение:
- языки программирования: C/C++, C#, Java, Delphi, PHP, Perl, ASP, Visual Basic;
- среды разработки и редакторы: MS Visual Studio 2005, Borland Delphi 7, Borland C++ Builder 6, Eclipse, UltraEdit, Far (+colorer);
- веб-сервера: IIS и Apache (Denwer);
- СУБД: MS SQL Server, InterBase, MySQL (с ODBC, JDBC, и .NET драйверами).
Участники выбрали такие инструменты:
- PHP — 8 человек;
- C++ — 7 человек (C++ Builder — 3, Visual Studio — 4);
- Delphi — 3 человка.
К 10:05 участники освоились с установленным программным обеспечением, в 10:10 была выдана задача. На решение было дано 4 часа. В 14:10 жюри приступило к проверке решений на основе заготовленных тестов. К 16:00 были подведены итоги и награждены призеры.
Победители
Место | Участник | Баллы | Организация | Язык |
---|---|---|---|---|
1 место | Перов Юрий Николаевич | 86 | Гимназия № 3 г. Красноярска | PHP |
2 место | Лучинин Михаил Олегович | 50 | Гимназия № 11 г. Красноярска | PHP |
3 место | Чалкин Тимур Александрович | 44 | СибГАУ | C++ |
4 место | Афанасьев Антон Юрьевич | 43 | СФУ (Институт горного дела, геологии и геотехнологий) | PHP |
5 место | Лапаев Денис Викторович | 36 | СФУ (Институт математики) | PHP |
Условие задачи
Имеется большая коллекция текстовых файлов и файлов в формате HTML. Требуется обеспечить быстрый поиск слов в текстах этой коллекции. Вся коллекция содержится в одном каталоге (c:\docs) без подкаталогов. Файлы в формате HTML имеют расширения htm и html, все остальные файлы должны рассматриваться, как текстовые файлы; кодировка всех файлов — windows-1251. Всего в коллекции порядка 5000 файлов общим объемом порядка 100 Мб.
Слово определяется, как последовательность из двух и более символов из следующего набора: a-z, A-Z, 0-9, а-я, А-Я, _.
Поиск должен производиться без учета регистра символов. В том случае, если искомые слова встречаются более, чем в 50 файлах, требуется вывести только первые 50.
Оценка проекта
- Поиск одиночного слова в коллекции с выводом названий файлов, где найдено искомое слово. 25 баллов
Если решение не проходит более половины тестов этого пункта, то дальнейшие тесты не проводятся и решение оценивается в 0 баллов. - Поиск документов, в которых присутствует все заданные слова (И). 15 баллов
- Поиск документов, в которых присутствует одно из заданных слов (ИЛИ). 15 баллов
- Поддержка HTML: игнорирование тэгов (5 баллов), скриптов, комментариев и стилей (5 баллов), поиск в атрибутах alt (5 баллов). 15 баллов
- Вывод статистики при выводе результатов поиска: сколько всего найдено файлов (5 баллов), сколько слов найдено во всей коллекции (5 баллов), сколько слов найдено в каждом из документов (если в запросе указано несколько слов, то вывести суммарное количество найденных слов) (5 баллов). 15 баллов
- Сортировка результатов поиска по числу совпадений в документе (чем больше слов найдено в документе, тем раньше он должен находиться в результатах поиска). Если поиск возвращает более 50 файлов, требуется вывести первые 50 с наибольшим числом совпадений. 15 баллов
Если при тесте обработка запроса заняла более 3 секунд, то он оценивается в половину баллов. Допускается предварительная обработка документов коллекции и построение вспомогательных структур данных для обеспечения в дальнейшем быстрого поиска.
Запрещено использовать при реализации специализированные программы и библиотеки для полнотекстового поиска (например, Lucene, Яndex.Server и т. п.).
Тесты
Исходные файлы для тестирования: 5303 файлов, объемом 86 Мбайт: docs.rar (10 Мб).
- Поиск одиночного слова (суммарно 25 баллов)
№ теста слово файлы кол-во баллов 1. foobaz нет совпадений 5 2. foobar mod_spelling.pp, jwawinldap.pas, libtar.pas, httpd.inc 5 3. TRunMethod fpcunit.pp, fpcunittests.pp 5 trunmethod fpcunit.pp, fpcunittests.pp 4. invalid_file_handle netware_nwcalls.pp 5 5. СофтПарад vista_faq_00604.html 5
- Поиск нескольких слов, оператор «И» (суммарно 15 баллов)
№ теста слова файлы кол-во баллов 1. rooqua roo.pas, tpnumlib.pas, numlib.pas 3 2. Soft Parad нет совпадений 3 3. Dialog Synopsis jwaadsprop.pas, jwaactiveds.pas 3 4. RegisterHotKey function unit license jwawinuser.pas, win_wininc_defines.inc, win_wininc_func.inc, wince_wininc_defines.inc 3 5. вход пользователя систему ввод пароль xp_faq_104.html, xp_faq_61.html 3
- Поиск нескольких слов, оператор «ИЛИ» (суммарно 15 баллов)
№ теста слова файлы кол-во баллов 1. теней rtw_0003.html 3 2. bugbugz misuser нет совпадений 3 3. Ralph C_int macos_macostp.inc, packages_extra_graph_go32v2_graph.pp, vesa.inc 3 4. spuninst локальный xp_faq_54.html, xp_faq_2019.html, xp_faq_33.html, vista_svc_WLAN_AutoConfig.htm 3 5. softlinks модему DEP пересечение amigados.pas, xp_faq_48.html, xp_faq_55.html, xp_svc_20.html, rtw_0005.html, xp_faq_107.html, xp_faq_89.html, xp_faq_allq.html 3
- Поддержка HTML (суммарно 15 баллов)
№ теста слова файлы кол-во баллов 1. extdiv нет совпадений 3 2. hkcu_resize нет совпадений 2 3. style1 OpenTransportProtocol.pas, FPCMacOSAll.pas 3 4. showhide1 нет совпадений 2 5. первое vista_svc_Plug_and_Play.htm 2 6. альтернатива rtw_00043.html 3
- Подсчет и вывод статистики (суммарно 15 баллов)
№ теста слова количество и список файлов, число вхождений в них кол-во баллов 1. TProcessOptions 2 файла 1 process.pp 5 1 process.txt 2 всего 7 вхождений 1 2. ограничение 7 файлов 1 rtw_0007.html 3 1 rtw_about.html 3 xp_faq_15.html 1 xp_faq_2005.html 21 xp_faq_2024.html 16 xp_faq_38.html 1 xp_faq_74.html 1 всего 46 вхождений 1 3. работающими пользователями (связка «ИЛИ») 7 файлов 1 vista_svc_Remote_Registry.htm 2 1 xp_svc_74.html 2 xp_faq_2012_1.html 1 xp_faq_2029.html 2 xp_faq_87.html 1 xp_faq_allq.html 1 xp_svc_66.html 1 всего 10 вхождений 1 4. log console session (связка «И») 8 файлов 1 rtw_0005.html 7 1 openbsd_sysctlh.inc 3 FPCMacOSAll.pas 256 jwantstatus.pas 51 jwawinerror.pas 77 jwawinwlx.pas 14 jwawtsapi32.pas 11 netwlibc_libc.pp 21 всего 440 вхождений 1 5. Showhidden 0 файлов, 0 вхождений 3
- Сортировка результатов (суммарно 15 баллов)
№ теста слова количество и порядок файлов, число вхождений в них кол-во баллов 1. настройки профиля (связка «И») 3 файла 5 xp_faq_106.html 9 vista_svc_!intro.htm 6 xp_faq_allq.html 6 2. stdcall 328 файлов. Первые 10 их них: 10 jwanative.pas 2180 jwawinbase.pas 1001 jwawinuser.pas 731 activex.pp 707 jwawingdi.pas 422 jwawincrypt.pas 314 numlib.pas 242 mmsystem.pp 185 jwamsi.pas 164 jwarpcdce.pas 157