Мета достаточно сильно поддерживает вопросы, связанные с написанием задач, по основной теме, при условии, что эти вопросы являются конкретными и подотчетными. Однако таких вопросов у нас пока нет, поэтому я решил проверить воды. Этот вопрос, вероятно, входит в хорошую субъективную, плохую субъективную территорию, но я думаю, что, скорее всего, это должны быть вопросы для написания задач. Чтобы они по-прежнему генерировали высококачественный контент, пожалуйста, не просто публикуйте дикие спекулятивные идеи в ответах. Объясните, почему они избегают проблем, упомянутых ниже, или в идеале указывают на существующие проблемы, которые успешно использовали предложенную технику в прошлом.
Для определенных задач оптимизации свободным параметром в настройке задачи является размер задачи, подлежащей оптимизации. Под «задачей оптимизации» я не имею в виду такие вещи, как жанр самого быстрого кода , где обычно требуется, чтобы ответы были точными / оптимальными, а задача оценивается либо при фиксированном размере проблемы, либо при наибольшем размере проблемы, которую можно обработать в фиксированное количество времени. Я имею в виду, в частности, проблемы, когда неоптимальные решения основной проблемы разрешены и даже вероятны, и цель состоит в том, чтобы сделать это как можно лучше.
Для определенности рассмотрим проблемы с занятым бобром , хотя в принципе это относится и к другим типам испытаний без известных оптимальных решений (здесь я просто использую занятых бобров, потому что они усугубляют проблемы, упомянутые ниже). Скажем, я хотел бросить вызов поиску самого занятого бобра Brainfuck. Параметр free в проблемах с занятым бобром - это размер кода. Я не могу поставить задачу, не ссылаясь на размер кода каким-либо образом. В некотором смысле, каждое значение параметра размера проблемы Nдает отдельную (все более сложную) задачу. Мой главный вопрос - как я могу решить эту проблему, не сталкиваясь с проблемами балансировки.
Очевидное решение состоит в том, чтобы исправить N: «Найти завершающую программу Brainfuck с Nбайтами исходного кода, которая печатает столько символов, сколько возможно / работает столько раз, сколько возможно». Это имеет огромные проблемы балансирования: если выбрать размер слишком мал, кто - то может быстро найтизагруженный бобер, и проблема окончена. Если я выберу слишком большой размер, оптимальное решение напечатает астрономическое количество символов перед завершением, а это значит, что найти такие программы, скорее всего, будет тривиально, и задача становится терпеливым делом - это также оставляет территорию, где занятых бобров можно найти программно, и вместо этого людям нужно начать формально доказывать свои результаты, что многие люди могут не посчитать очень забавным. Конечно, эта проблема более выражена в проблемах занятого бобра, чем в других типах, из-за роста оптимальных решений, но, тем не менее, она относится и к другим проблемам.
Следующий вариант - оставить без Nограничений и сделать его частью оценки с помощью некоторой функции. Даже для «обычных» задач получить правильный баланс комбинированных баллов невероятно сложно, но в случае занятых бобров это в принципе невозможно, поскольку оптимальные решения растут быстрее, Nчем любая вычисляемая функция. Это означает, что я всегда могу побить лучший из существующих ответов, зайдя на достаточно большую страницу, Nгде я могу легко найти программу, которая работает так долго, что я могу получить лучший результат без особых усилий.
Я также подумал о том, чтобы установить фиксированный режим Nи позволить людям также отправлять бобров для более крупных, Nкоторые будут использоваться в качестве последовательных прерывателей связей. Это имеет аналогичную проблему в том, что кто-то может просто «случайно найти одинаково хорошего занятого бобра» для a N, создавая таким образом связь, а затем просто отправляя почти все для следующего, Nгде найти большую оценку легче (даже если найти оптимальный счет становится все труднее). В этих случаях как бы вы имели дело с несколькими людьми, использующими одно и то же решение? Запретить это также было бы странно, если бы это было оптимально.
Может быть, кто-то может перейти на второй план, сделав обоснованное предположение о разумном, Nа затем попросив занятых бобров для всех размеров в пределах (скажем) 5 байтов N, так что есть некоторая свобода действий в обоих направлениях (и затем вы объединяете ~ 10 баллов в одну по той или иной технике). Это также не кажется вполне удовлетворительным, потому что мое первоначальное предположение по- Nпрежнему может быть далеко за пределами диапазона, который создает интересные проблемы.
TL; DR: в случаях, когда задача состоит в том, чтобы (субоптимально решить и) оптимизировать проблему, размер которой является переменным, как мне включить размер в задачу? В идеале я хотел бы, чтобы люди могли работать со значением, Nкоторое находится ближе к верхнему пределу диапазона возможных размеров. Но на тот случай, если окажется, что для этого возможны оптимальные решения N, было бы здорово, если бы решения для немного большего размера Nначали взвешиваться, чтобы проблема могла продолжаться с более интересным размером проблемы.