Вызов
Учитывая два идентификатора вопроса, попытайтесь выяснить, насколько они похожи, посмотрев на ответы.
подробности
Вам дадут два идентификатора вопроса для codegolf.stackexchange.com
; Вы можете предположить, что для обоих идентификаторов существуют вопросы, которые не удалены, но не обязательно открыты. Вы должны просмотреть все ответы и определить минимальное расстояние Левенштейна между кодом в ответах на два вопроса (не считая удаленных ответов). То есть вы должны сравнить каждый ответ в вопросе 1 с каждым ответом в вопросе 2 и определить минимальное расстояние Левенштейна. Чтобы найти код в ответе, выполните следующую процедуру:
Как найти фрагмент кода
Тело текста - это фактический код ответа, если он в обратных чертах и находится на отдельной строке или имеет отступ с 4 пробелами, с пустой строкой над ним, если над текстом нет текста.
Примеры допустимых и недействительных фрагментов кода (с .
пробелом) (разделенных тонной знаков равенства)
This is `not a valid code snippet because it is not on its own line`
========================================
This is:
`A valid code snippet`
========================================
This is
....not a valid code snippet because there's no spacing line above
========================================
This is
....A valid code snippet because there's a spacing line above
========================================
....Valid code snippet because there's no other text
========================================
Если в ответе нет действительных фрагментов кода, полностью проигнорируйте ответ. Обратите внимание, что вы должны взять только первый кодовый блок.
Финальные характеристики
Два идентификатора вопроса могут быть введены в любом разумном формате для 2 целых чисел. Выходными данными должно быть наименьшее расстояние Левенштейна между любыми двумя действительными ответами на любой вопрос. Если для одной или обеих задач нет «правильных» ответов, выведите результат -1
.
Прецедент
Для задания 115715
(встроенные шестиугольники) и 116616
(встроенные треугольники), оба от товарища SparklePony, два ответа на уголь (оба от KritixiLithos) имели расстояние Левенштейна 23, которое было наименьшим. Таким образом, ваш вывод для 115715, 116616
будет 23
.
редактировать
Вы можете предположить, что на вопрос имеется не более 100 ответов из-за ограничения размера страниц API. Вы не должны игнорировать обратные пометки в блоках кода, только если сам кодовый блок создан с использованием обратных ударов, а не в отдельной строке.
редактировать
Я досрочно завершил период вознаграждения, потому что я обратился к моду с просьбой о приостановке на одну неделю, и я не хотел, чтобы вознаграждение автоматически присваивалось за ответ с наивысшим баллом (который оказывается самым длинным). Если поступит новая заявка или заявка окажется в гольфе достаточно для того, чтобы стать короче, чем 532 байта до фактического окончания периода вознаграждения (UTC 00:00 1 июня), я дам эту награду, чтобы остаться верной моему обещанию, после того, как срок приостановки истекает. Если я правильно помню, мне нужно удвоить период вознаграждения в следующий раз, так что если вы получите ответ, вы можете получить +200 :)
источник
Ответы:
PowerShell, 532 байта
Я оставил там новые строки для удобства чтения. Они все еще отражены в моем количестве байтов.
Уверен, я справлюсь с этим. Самым сложным для меня было получить расстояние Левенштейна, поскольку PowerShell, насколько я знаю, не имеет встроенного средства для этого. Благодаря этому я смог ответить на соответствующий вызов на расстоянии Левенштейна . Когда мой код ссылается на анонимную функцию для LD, вы можете обратиться к этому ответу для более подробного объяснения того, как это работает.
Код с комментариями и индикатором прогресса
Код может стать очень медленным (из-за LD), поэтому я встроил некоторые индикаторы прогресса для себя, чтобы я мог следить за действием по мере его разворачивания и не предполагать, что он где-то застрял в цикле. Код для отслеживания прогресса не находится в верхнем блоке и не учитывается в моем количестве байтов.
Моя логика для поиска блоков кода заключается в том, чтобы принимать ответ в виде HTML и искать набор тегов кода, опционально окруженный набором предварительных тегов, который начинается в отдельной строке. При тестировании он нашел все правильные данные по 6 различным наборам вопросов.
Я пытался работать с кодом уценки, но было слишком сложно найти правильный блок кода.
Пробные прогоны
источник
Java + Jsoup, 1027 байт
Первые два аргумента являются идентификаторами вопроса.
Golfed:
Удобочитаемый:
}
источник
Mathematica, 540 байт
вход
выход
использует встроенный EditDistance, который «дает правку или расстояние Левенштейна между строками или векторами u и v».
Что касается теста Mathematica
возвращает 23
Я думаю, я могу играть в гольф немного больше.
Занимает несколько минут, чтобы бежать
источник