Определить повторяющиеся вопросы
Когда-то там был сайт для игры в гольф. У него была проблема: люди будут публиковать похожие или идентичные вопросы снова и снова. Вы быливыбранный избранный принудительно призван шантажировать поручено автоматизировать процесс принятия решения о том, является ли вопрос дубликатом существующего, любыми необходимыми средствами (см. Правила).
вход
Ваша программа должна принять один URL в качестве входных данных. Можно предположить, что это приводит к вопросу на codegolf.stackexchange.com .
Выход
Поищите на сайте похожие вопросы. Если вы считаете, что входной вопрос является дубликатом существующего вопроса (или наоборот), выведите URL другого вопроса. Вы можете вывести несколько URL, разделенных новыми строками. В конце вашего вывода выведите end
(отдельной строкой).
счет
- Если вопрос, который вы выводите, действительно был помечен как дубликат вопроса ввода (или наоборот), вы набрали 4 балла. Это «правильное предположение».
- За каждый ложный положительный результат (он же «неправильное предположение») вы теряете 2 балла.
- За каждый вопрос, который на самом деле был дубликатом, но не отображался в вашем выводе (он же «пропущенное предположение»), теряйте 1 балл.
Наивысший балл после обработки 32 входных вопросов побеждает. Эти 32 вопроса являются «круглыми». В начале каждого раунда счет будет сбрасываться до 0. Один раунд будет проводиться каждые несколько дней, а список лидеров обновляется после каждого раунда.
правила
- Если вопросы A и C закрыты как дубликаты B, A будет считаться дубликатом C и наоборот.
- В начале каждого раунда ваша программа может не содержать никаких данных о каких-либо вопросах (например, об отсутствии жесткого кодирования ), кроме как о том, как анализировать веб-сайт.
- Однако вы можете хранить данные во внешних файлах во время раунда.
- Данные не могут быть сохранены между раундами.
- Ваш вывод должен иметь завершающую новую строку.
- Вы не можете использовать какие-либо данные с веб-сайта, кроме результатов поиска и URL, заголовка, тегов и текста вопроса с форматированием или без него. Например, вы не можете использовать текст «помечен как дубликат foo, bar ...», который появляется в дублирующих вопросах.
- Вы можете получить эти данные непосредственно с сайта, через data.SE или через API.
- Каждое представление должно иметь имя.
- Каждая заявка должна иметь четкую нумерацию версий.
- Если по истечении определенного срока отправка не даст результатов (решение будет определено; укажите, сколько времени занимает отправка), оно будет уничтожено и потеряет 8 баллов.
Ответы:
Python 3
Я даю этой записи имя
The Differ
.Код:
Фильтр
"!-*f(6rc.cI8O"
включаетtotal
параметр для объекта глобальной оболочки иbody
параметр для вопросов.Эта запись делает два запроса API плюс один на тэг вопроса и один на сто вопросов в его наименее используемом тэге. Если он ударяет дроссель API (который он не проверяет), он поднимет
urllib.error.HTTPError: HTTP Error 400: Bad Request
источник