Условие: http://informatics.mccme.ru/moodle/mod/resource/view.php?id=2749
Задача 3 (Форматирование текста)
Мое решение: Делал так. Взял, поместил весь текст в одну строку. Убрал все лишние пробелы (между двумя знаками и т.д, подробнее смотри условие, там все это очень криво и очень непонятно описано). После этого разделил текст на слова с прилегающими к ним знаками препинания. Вывел
Моя бага: когда запихивал текст в одну строку забывал ставить пробел вместо символа перевода строки , т.е. считал что слово продолжается на следующей строке если нет знаков препинания.
Мой результат: 0 баллов из 100
Наиболее популярные баги других участников: можно было забыть, что "цифра ведь тоже буква", можно было потерять какой-нибудь знак, можно было криво обработать пустые строки, можно было не догадаться, что строка, состоящая из пробелов — пустая. Решения с этими багами набирали не более 20 баллов из 100.
Мое мнение об этой задаче, тестах к ней и ее уместности на регионе:
1) Задача не блещет оригинальностью
2) В задаче слишком много разных случаев, в которых можно было сильно набажить( смотри выше)
3) Участник по этой задаче получал или 100, или не более 20. Мне кажется это не очень хороший набор тестов
4) Давать такую задачу на серьезное соревнование (как-то регион) крайне нехорошо со стороны жюри, тем более с такими тестами
Лично мне эта задача испортила полностью весь первый тур и все впечатление о нем. Кодил ее с отвращением, причем редкостным. Задача хоть и имеет право на существование, но максимум в формате acm, где можно получить wa и перепослать, ну а так — весьма печально...
Сейчас ещё раз проверил, нету их в тестах жюри.
Имхо, это вполне обычная задача на технику, ничего особенного, одна такая задача из восьми, имхо, должна быть, но не более.
"Если после слова идёт один или несколько знаков препинания, они должны следовать сразу после слова без дополнительных пробелов" (середина второго абзаца)
Сразупосле слова. У нас кларов вообще не было.Я обычно делаю в таких случаях так: пишу более слабую формулировку (которая будет работать и в случае более сильной)
1) Естественно, она не блещет оригинальностью - это техника.
2) А какую хочется задачу? Где нельзя набажить?
Между прочим, мне эта задача тоже угробила весь первый тур - я писал её три часа, хотя обычно с такой техникой справляюсь быстро.
В основном потому, что условие было написано не очень хорошо. Его можно было понять, внимательно всё прочитав. Однако мелкие неточности (пример: формально по условию знаки препинания могут быть только между словами, а в примере — и после последнего слова) и изложение программистским, а не русским, языком (пример: сначала про разделение слов пробелами, как будто ничего, кроме слов, нет, а потом про дописывание знаков препинания) делали её трудной более для понимания, чем для написания программы. То, что слово “цифры” одно на всё условие и не отражено в примере, а его пропуск отнимает 85 баллов, тоже нехорошо. Признаюсь, я его при чтении условия тоже пропустил.
Судя по количеству заданных по этой задаче вопросов, большинство участников убили мозг об условие, а не руки об решение (по-моему, это дурной тон), и не оставили себе времени на простую, но интересную подзадачу задачи 4.
Мне кажется, дело не в написании, а в том, что не-топовый участник этой олимпиады просто не умеет читать такой текст, как в этом условии. И мне кажется, что лучше менять не умение, а условие :) .
> Потому многие участники не проходили даже тест из примера....
Кстати, насчёт примера: в тесте из примера пробелы в конце семи строк — это, скажем так, инновационный подход к тестированию. У нас в итоге было такое объявление:
Q: Что может служить причиной реакции "Неправильный ответ", если ответ совпадает до символов при проверки кода на моем компьютере?
A: Имейте в виду, что строки входного файла могут заканчиваться на один или несколько пробелов, в том числе и в примере.
Да, так мне показалось наиболее честно.
Если удалить эти пробелы из сэмпла, это бы нечестно усложнило получение баллов по сравнению с другими регионами.
Если удалить эти пробелы изо всех тестов, это нечестно упростило бы задачу по сравнению с другими регионами.
Интересно, а как ещё можно было подумать, и как сделали в остальных регионах? Ну как минимум можно было забить и/или не заметить. А ещё?