Я знаю, что было много проблем с «двумя лучшими игроками в коде в мире», но этот является немного более уникальным, будучи первым раундом в серии (будущих) испытаний с участием двух из них.
Ваша задача - написать программу или функцию, которая возвращает две разные непробельные строки ASCII, соответствующие той, которая имеет больше репутации в момент запуска программы, между Деннисом ♦ и Мартином Эндером ♦ . Сложность заключается в том, что вы должны вывести точную строку «tie» в случае, если репутация идентична (маловероятно), и две разные непробельные строки ASCII, упомянутые выше, должны отличаться от «tie» * .
Нельзя вводить данные, такие как имена пользователей или идентификаторы пользователей. Как обычно, сокращения URL запрещены, как и обычные лазейки.
Примеры:
Let the chosen string for Dennis be "D" and the chosen one for Martin Ender be "M" (should be specified)
If Dennis' rep > Martin Ender's rep => D
If it's the other way around => M
If it's a tie => tie
ВАЖНЫЙ! Голосование по сообщениям Dennis & Martin с единственной целью повлиять на ничью, чтобы протестировать решения, представленные ниже, представляет собой целевое голосование, которое запрещено в сети Stack Exchange. Если вы хотите проверить правильность вывода решения,
tie
измените идентификаторы в нем на идентификаторы двух пользователей, которых вы знаете, что они связаны. Смотрите этот пост Мета для более подробной информации.
* Я думаю, что никто бы не использовал это, в любом случае
источник
Ответы:
05AB1E ,
6564 байтаКод:
Использует кодировку 05AB1E .
Объяснение:
•в=6{•
преобразует числов=6{
из базы 255 в базу 10, в результате чего получается 1201208478 . Первая половина - удостоверение личности Денниса (12012), а вторая половина - удостоверение личности Мартина (8478). Разделить на части по 5, используя5ô
для получения следующего массива:К счастью, мы можем оставить начальный ноль от идентификатора Мартина, так как это все еще будет работать (проверьте ссылку, прежде чем щелкнуть на начальный ноль).
Теперь мы перебираем этот массив, используя
vy
и строим следующую строку из этого кода 05AB1E:Принимая во внимание
ÿ
, что текущий элемент итератора (с использованием интерполяции строк) попробуйте онлайн!После построения ссылки
.w
считывает все данные из ссылки, в результате чего получается огромное количество текста. Чтобы очистить репутацию от этого, нам нужно разделить на строкуtitle="reputation"
. Или в более сжатой версии’„Ö="ˆ"’
. Разбейте этот фрагмент строки (с¡
) и получите второй элемент (с1è
) и оставьте первые 100 символов (ст£
).Теперь наш очищенный текст выглядит примерно так:
Эта часть проста, мы просто удаляем все, кроме цифр, чтобы остаться номером репутации, для которого у нас есть встроенная функция (
þ
). Мы заканчиваем цикл и упаковываем все в массив}})
.Наконец, мы можем перейти к обработке чисел репутации:
Что приводит либо к
D
,M
либоtie
.источник
1è) and keep the first **100 characters** (with т£
. » Должна быть полностью в кодовых блоках, или она должна быть « вторым элементом (с1è
) и содержатьт£
вместо этого первые 100 символов (с ) »? опечатка, но если это должно быть так, я в замешательстве ..Dennis: 140,033
,;Martin: 140,003
, но я попробовал ваш код здесь tio.run/nexus/05ab1e#@/… , это дастtie
. Разве это не должно бытьD
вместо этого?.w
требует веб-доступа, который ограничен для TIO (он работает 05AB1E в безопасном режиме). В оффлайновом переводчике он должен работать.PowerShell v3 +,
14712311910310196 байтСохранено 24 байта с использованием вывода true / false вместо имен.
Сохранено еще 4 путем реструктуризации финальных проверок.
Сохранено 16, получая из запроса только репутацию двух пользователей,
|% r*n
избавляя от необходимости использовать более одного раза, также означает, что мы можем избавиться от миллиона скобок и двух бесполезных переменных.-2 благодаря TessellatingHeckler - используя escape-символ вместо двух двойных кавычек для URL, также удалили
@
из массива ненужный (упс)использовал странный
.ToString
трюк, о котором я даже не подозревал, существовал до сих пор, рекомендуется TessellatingHeckler -5 и, наконец, ниже 100.Версия, которая возвращает имена:
это выглядит довольно грязно из-за сокращения имен параметров.
где-нибудь
|% r*n
появляется, мы получаемReputatioN
, и|% d*
этоDisplay_name
использует
Invoke-RestMethod
(псевдонимirm
) для запроса API, сохраняет результат с именемItems
(получен с использованием|% I*
) в две переменные$a
&$b
, по одной для каждого игрока в гольф, трюкToString
(|% T*g
) приводит к одному из значенийD
,M
илиTie
если число четное / нечетное / нуль.источник
103! = 9.902900716486180407546715254581773349090165822114492483005280554699... × 10^163
байты ..? : PToString
работал так с +/- номера, буду помнить на будущее.Python 2 , 160 байт
Не самый короткий ответ Python, но самый короткий до сих пор, который не делает никаких предположений.
Печатает,
1
если у Мартина больше представителей,-1
если у меня есть.источник
JavaScript (ES6),
167156146144141132103 байтГлупо
fetch
и глупо, дорогоPromise
цепочка!Предполагается, что в настоящее время разрешено, что Деннис и Мартин всегда будут двумя пользователями с самым высоким рейтингом. Необходимо запустить с корневого уровня
api.stackexchange.com
. ВозвращаетPromise
объект (как это теперь разрешено консенсусом ), содержащийtie
объект JSON для тех, кто имеет наибольшее количество повторений в данный момент. Если объект JSON не считается допустимым выводом, добавьте 5 байтов для.link
.link
а не первую буквуdisplay_name
, что также обеспечивает лучшую защиту для будущего, когда они меняют свои имена пользователей, начиная с одной буквы!Попытайся
альтернатива
Если придет время, когда Деннис и Мартин не на вершине, и мы все еще хотим знать, у кого больше представителей между ними, нам понадобится следующее, что обойдется в дополнительные 10 байтов.
источник
.display_name[0]
к.display_name
, или еще короче альтернатива , которая по - прежнему уникален для них обоих:.link
. ;) Или просто весь JSON, но я не уверен, подходит ли он в всплывающем окне.link
, хотя, я использовал фильтрованный запрос API, чтобы только вернуть информацию, в которой я нуждался.alert
использующий объект JSON, будет просто отображаться[object Object]
.Python 3,
160157151 байт-3 байта благодаря @KevinCruijssen
Печатает ссылку на пользователя с большей репутацией
Предполагается, что они на # 1 и # 2
Не делая никаких предположений, Python 2, 157 байт :
источник
Питон,
226225221 байтЯ чувствую, что это слишком долго.
Печатает,
"True"
если у Мартина больше представителей, чем у Дениса,"False"
если у Денниса больше представителей, чем у Мартина, и"tie"
если они имеют одинаковое (теоретически. Я не могу проверить это: P).https
->http
за 1 байт благодаря @KevinCruijssen!re as r, r.sub
->re, re.sub
за 4 байта благодаря @ovs!источник
https
наhttp
? Я знаю, что PPCG теперь полностью https, но, возможно, он автоматически перенаправляется на HTTPS, когда вы переходите к HTTP в Python, так же, как в браузере?re as R
. Просто используйтеimport requests as r,re
иre.sub
cmp
функцию, чтобы сохранить несколько байтов, заменив последние три строки чем-то вродеprint['tie',0,1][cmp(f('8478'),f('12012'))]
PHP, 167 байт
печатает -1 для Денниса, 1 для Мартина Эндера. галстук в случае галстука
источник
Python 2 ,
228223204199 байтовЯ сделал это на мобильной точке доступа, так что ... это не здорово ...
Предполагается, что они всегда будут в одной сотне тысяч.Сейчас ничего не предполагает. : DПечатает,
True
если у Денниса больше репутации, чем у Мартина,False
противном случае иTie
если они ... связаны.источник
Bash + JQ ,
140133 байтаОтформатировано и объяснено
Сначала мы
свернемw3m API(и используем:--compressed
или сокращаем--com
до gzip)Это какой-то JSON. Обратите внимание, что заказ стабильный, не основанный на репутации. Затем JQ обрабатывает JSON, для чего он и создан.
Мы используем
1/x
выше, чтобы генерировать ошибку деления на ноль, когда min == max, поэтому в ситуации связывания. В||echo tie
Bash ловит это.Обратите внимание, что в этом случае JQ выводит предупреждение на stderr, но мы рассматриваем только stdout фактический результат программы;)
источник
w3m
вместо того,curl --com
чтобы сохранить несколько байтов. Кроме того, я думаю, что стоит упомянуть, что для этого требуется jq 1.5, так как jq 1.4 не вызывал ошибку деления на ноль.Stackexchange API Data Explorer ,
184180 байтСпасибо @Kevin Cruijssen за -4 байта
Принты 1 для Денниса и 2 для Мартина
Так как я только вчера узнал о SEADE это должно быть очень хорошо.
Попробуй здесь
источник
'D'
и'M'
на0
и1
.