Выступили
Сегодня состоялось открытое первенство ЮУрГУ по программированию. Рая «Stigler», Женя «CKopnuOH» и я «Я» составляли дружную команду хакеров. Специально обученный человек прочитал наши фамилии и объявил, что нам дорога к рабочему месту №25. Нужно было придумать название команде; здесь Женя порулил, предложив название «Команда ПК №25».
Потом мы отлично пописали программы на Паскале, несмотря на Раины попытки запустить Си. Из 8 задач мы решили 3. Из команд так 60 мы заняли 21-е место. Учитывая то, что мы туда шли вообще просто так (пообщаться), результат неплохой.
Задание №4 — написать парсер-преобразователь из одного XML-формата в другой. Основная задача — заменить непарные теги (<tag/>) парными (<tag></tag>), а атрибуты (<tag attr="value" />) убрать и сделать вложенными тегами (<tag><attr>value</attr></tag>). Естественно, какие-то тэги могут оказаться парными и при этом с атрибутами. Внутри парных тэгов мог оказаться какой-то текст, в том числе и вложенные тэги.
Исходный файл может быть форматирован сколь угодно безобразно. На выходе должна получиться конфетка. Пробелы, переносы и табуляция внутри текста и значений атрибутов должны быть сохранены, а вне их — заменены на один пробел. Напоминает, полную задницу, не так ли? Не напоминает? В Паскале нет регэкспов. Теперь напомнинает? То-то.
Кроме нашей команды парсер сделала еще только одна. И снова у меня появился повод считать себя крутым. Я крутой.
(Здесь я, кстати, выражаю благодарность Шурику Бабаеву за пропаганду автоматного программирования. Сильно помогло)
За полчаса до конца Рая сгенерировала алгоритм решения одной задачи на поиск площади геометрической фигуры, образованной пересечением окружности и квадрата (параметры задаются тестером). Мы так и не успели его реализовать. Жалко. Сергей «SauroN» (был в другой команде) решил эту задачу методом Монте-Карло за первые 8 минут олимпиады. Гад! Так не честно! (Смайлик.) И снова у меня появился повод считать его крутым. Сергей — крутой.
В общем, было интересно.
Да парсер без регэкспов — легко. :) Да-да, то самое «автоматное программирование».
Спасибо, что пришли и не бросили меня!
Вы просто Боги!
Сергей, конечно, крутой. Метод Монте-Карло просто рулез и главное выводит всё как надо, но моё интегрирование по у (\m/) всё равно лучше. (смайлик)
И даже эти несчастные генетики решались минут так за 20. Правда не на Pascal’е, а на Delphi я это делала (просто за неимением дома 7 версии), но СКорпиОН был всё же был прав со своими алгоритмом. Кокшин — ОТЕЦ! (с)
А с тебя твои парсер... Хотя бы потому, что его условие я не помню и задолбаюсь писать это на Сях, если вообще смогу.
Кстати, о птичках: 21 из 70! {просто команд так 15 решения вообще не сдавали}
Молодцы, поздравяю!
Парсер без регэкспов — это сильно. Даже конечным автоматом. Респект!