Комментарии 16
Я правильно понимаю что в файле in.txt будет для каждого прогона одно число или строка? В таком случае чтение из файла, да и даже вывод результата в поток занимают времени больше чем выполнение алгоритма. Во всяком случае для первой задачи. Что превращает задачи не в написание оптимального алгоритма, а в поиск самых быстрых способов чтения из файла и вывода на выбранном ЯП.
Количество способов прочесть строку или несколько из входного файла в указанных языках крайне ограничено. Да, если сделать ввод/вывод как-то очень неоптимально, то это будет большой минус. Ну что ж, значит - не надо его делать неоптимально, перебрать несколько вариантов - не сложно, если нет уверенности в том, какой оптимальнее. Ну и в конце концов, не корову же разыгрываем :) Будем считать это разминкой, а в новом году попробуем провести лучше и для взрослой аудитории!
Насколько я вижу, приведенное в последней тестовой паре значение (8841761993739701954543616000000) уже существенно больше, чем PHP_INT_MAX во всех стандартных реализациях. А иначе это было бы слишком просто :)
Нет, никакие расширения, которые не включены по умолчанию, использовать нельзя. Но за вопрос спасибо, в следующий раз во избежание неоднозначностей нужно будет явно прописать список включенных расширений.
Нет, никакие расширения, которые не включены по умолчанию, использовать нельзя.
Если что, то FFI включён по умолчанию в консольном режиме… Получается, что можно написать обёртку над GMP руками и прокидывать их в пых, вместо использования расширения… Т.е. GMP использовать можно, но только дописав обёртку под него.
П.С. С другой стороны, ещё ничего не сказано про функции запуска, т.е. можно через exec, например, поставить нужное расширение (или скачать из сырцов и скомпилить) и запустить код уже с ним)))
Уточните пожалуйста в задаче про вирусы для строки "ababa abababa
" выводить значения с учетом перекрытий или без? Например, для "aba" - 3 или 5?
Если бы перекрытия "не считались", это приводило бы к неоднозначностям, и противоречило бы приведенным тестовым данным. В приведенной Вами строке aba - 5.
Чтобы не было неоднозначностей и надо уточнять ТЗ.
Вот еще один момент противоречивости в том же задании:
В документе использовались первые три буквы от наименований производителей.
Чтобы как-то восстановить документ, необходимо написать функцию, которая возвращает повторяющиеся группы из трех знаков идущих подряд
Выходные данные: строки, где через запятую выведены группы повторяющихся букв
Ведь пробел - это не буква, но это точно знак. Для такого входа "avava avavava as" согласно текущему ТЗ если смотреть по знакам, получаем на выходе "a a,2,ava,5,va ,2,vav,3". Или вса таки нет? :-)
По хорошему, в таких заданиях должны указываться ограничения на каждый входной параметр — тип значения, диапазон, предельный размер списка, алфавит и т.п.
Конечно, по-хорошему Вы правы. И я (участвуя много раз в жизни в проведении школьных олимпиад по математике) всегда тратил вместе с коллегами немало времени на то, чтобы максимально "вылизать" условия всех задач. По счастью, тут у нас все же не настолько ответственная задача :) Просто когда закончился "хакатон" для школьников - кому-то из нас вдруг пришла в голову мысль: "А зачем хорошим задачам пропадать?! Давайте их чуть-чуть усложним и поделимся с хабровцами!". Ну а в последний момент решили провести это в форме предновогоднего ненапряжного конкурса.
Что касается алфавита - используется только латинский алфавит, только нижний регистр. Как в примерах.
ЛИБО на PHP 8.0, ЛИБО на Python 3.6
А почему нет JS?
Всем большое спасибо, что присоединились к конкурсу, прислали решения и дождались результатов!
Ниже представляем итоги в порядке убывания суммы баллов, в скобках баллы за каждую задачу.
Баллы за решения на Python
Анна Табеева: 675 (135, 80, 70, 180, 70, 80, 60) - победитель, 1 место.
Константин Шмураков: 620 (0, 100, 80, 200, 100, 60, 80) - призер, 2 место.
Евгений Иванов: 600 (150, 90, 90, 0, 90, 90, 90) - призер, 3 место.
Алексей Демцов: 370 (0, 70, 100, 0, 0, 100, 100) - призер, 4 место.
Максим Казадаев: 340 (0, 60, 60, 0, 80, 70, 70) - призер, 5 место.
Баллы за решения на PHP
Сергей Рахматулин: 990 (150, 90, 90, 200, 100, 135, 225) - победитель, 1 место.
Алексей Антонюк: 600 (0, 100, 100, 0, 0, 150, 250) - призер, 2 место.
Критерии и порядок подсчета баллов можно найти в первой части поста. Если вы прислали решение, но вас не оказалось в списке, напишите, пожалуйста, мне в ЛС. В ближайшие дни отправим призы всем участникам, которые прислали свои адреса!
Переиграй школьников в YOUNG CODERS PARTY