Учитывая ID пользователя PPCG, выведите текущее имя пользователя этого пользователя.
Примеры
Input -> Output
61563 -> MD XF
2 -> Geoff Dalgas
12012 -> Dennis
foo ->
-3 ->
правила
- Ввод / вывод может осуществляться любым разрешенным способом.
- Выходными данными должно быть полное имя пользователя с правильной прописной буквой и пробелом, не более и не менее.
- Если ввод неверный UserID, или пользователь не существует, ваша программа должна ничего не выводить или вывод ошибок.
- Ваша программа должна работать для любого действительного пользователя, даже если он создан после этого вызова.
- Ваша программа не должна работать для пользователя Сообщества.
- Ваша программа не должна работать для удаленных пользователей.
- Сокращения URL запрещены.
счет
Самый короткий код на каждом языке выигрывает.
Okx
. Да, это мое имя.xxx.stackexchange.com/u/123
перенаправляет наxxx.stackexchange.com/users/123
Ответы:
05AB1E ,
3534 байтаНе работает в сети из-за интернет-ограничений.
Код
объяснение
Сжатая строка:
выдвигает следующую строку:
Принимая во внимание
<input>
, что пользовательский ввод. После этого мы читаем все данные с помощью.w
и делаем некоторые трюки со строками над данными:При локальном запуске я получаю следующий вывод:
источник
„ -¡¬
.Баш,
120112106102807674 байта-8 байт, потому что
wget
он достаточно умен, чтобы при необходимости перенаправлять HTTP на HTTPS-6 байт благодаря другому
sed
предложению от Квака-кряка-26 байт благодаря Digital Trauma
-4 байт благодаря Gilles -
codegolf.stackexchange.com/u/123
перенаправляет-2 байта благодаря
wget
флагам ответа Digital TraumaНет ссылки TIO, поскольку арены TIO не могут получить доступ к Интернету.
Спасибо за ответы здесь и людям в чате за помощь мне в этом. Я использовал подход, похожий на подход HyperNeutrino.
wget -qO- codegolf.stackexchange.com/users/$1
загружает страницу профиля пользователя и распечатывает файл в STDOUT.-q
делает это тихо (без информации о скорости).sed -nr 's/.*User (.*) -.*/\1/p'
ищет первую строкуUser<space>
, затем печатает до конца имени, найденного с помощьюsed
магии.Предыдущий ответ, который я написал более независимо (102 байта):
wget codegolf.stackexchange.com/users/$1 2>y
сохраняет HTML-код профиля пользователя в файл с именем пользователя и создает STDERRy
.cat $1
направляет файл в части, которые обрезают бесполезный HTML.sed '6!d'
(вместоhead -6 | tail -1
) получает шестую строку самостоятельно.cut -c 13-
удаляет первые 13 символов, получая имя пользователя, начинающееся с первого символа строки.cut -d '&' -f1
режет все после&
. Это зависит от того факта, что амперсанд не может быть ни в имени пользователя, ни в заголовке HTML.Теперь строка
<username> - Programming Puzzles
sed 's/.\{23\}$//'
было предложение от коровы крякнуть, чтобы удалить последние 15 байт файла. Это получает имя пользователя само по себе.Вот полный скрипт bash.
источник
...TIO arenas can't access the internet
Они могут, вот как вы можете получить к нему доступ. : P Пользовательский код не имеет доступа к Интернету.</nitpick>
Digital Trauma - Progr
sed
счет.Утилиты Bash + GNU, 66
Использует
-P
регулярное выражение CRE для\K
сброса начала совпадения для более короткой фильтрации выходных данных.Если ваша система уже
curl
установлена, мы можем воспользоваться предложением @Gilles:Утилиты Bash + Curl + GNU, 64
источник
O-
?-O-
отправляет загруженный вывод в STDOUT вместо файла, поэтому его можно простоgrep
grep -Po '"User \K[^"]+'
чтобы сохранить 3 байта.curl -L
короче чемwget -qO-
. Вы можете использовать/u
вместо/users
.Python 2 + запросы, 112 байт
нота
после того, как SE завершится полностью
https
, егоhttp
необходимо изменитьhttps
, что составит 113 байтов.Начало профиля пользователя выглядит так:
Имя пользователя начинается с индекса 49, а амперсанд находится в 23 символах справа от того места, где он заканчивается (
- Programming Puzzles
)-3 байта благодаря StepHen / Mego, удалив неиспользованный
re
импортный-1 байт благодаря Уриэлю
источник
re
поэтому вы можете сбросить 3 байтаhttp
в настоящее время, но это будет постепенно прекращено, когда SE станет полным HTTPS.from requests import*
и сброситьr.
на 113 байтовJavaScript (ES6),
11175 байтРаботает только при запуске через домен PPCG. Возвращает
Promise
объект, содержащий имя пользователя.источник
i=>fetch(`/users/${i}`).then(r=>r.text()).then(s=>/"User ([^"]+)/.exec(s)[1])
i=>$.get(`/users/${i}`).done(s=>alert(/"User ([^"]+)/.exec(s)[1]))
fetch
чтобы сохранить 2 байтаfetch
страницы пользователя таким образом, но думал, что это может повлечь мою удачу. Но, учитывая, что вы тоже это предложили, я отредактирую это. Поддерживает ли какой-либо браузер в настоящее время.done()
? Я быстро проверил это в Chrome & FF, но там это не сработало.Swift 3 , 233 байта
Образцы прогонов:
источник
Python 2 , 116 байт
Просто подумал, что хорошо иметь стандартный ответ библиотеки (на самом деле он довольно приличный по длине).
Когда SE завершится полностью
https
, нам нужно добавить еще 1 байт, переключаясьurlopen('http://...
сurlopen('https://...
.источник
Cubically + Bash,
165413361231 байт-423 байта благодаря TehPers
Это требует три кубично- скриптов ( по имени
1
,2
а3
) и 1 Баш скрипт.Скрипты Cubically очень длинные, потому что я еще не придумал, как реализовать циклы.
Bash (84 байта):
Это направляет первый скрипт Cubious в
wget
, затем сохраненный файл во второй скрипт Cubious, затем переворачивает этот вывод, передает его в третий скрипт Cubious, а затем переворачивает его.1
(385 байт):Это печатает
https://codegolf.stackexchange.com/users/
, затем первое целое число ввода.2
(680505 байт):Это считывает ненужные данные из сохраненного файла в качестве входных данных, а затем печатает до амперсанда в
Programming Puzzles & Code Golf
.~7@7
читает символ и печатает его.F1R1
и:5=7
проверьте, является ли вход амперсандом.&6
выходит, если это так.~7@7:5=7&6
повторяется 45 раз, поскольку имеется 15 байтов ненужных данных и 30-байтовое максимальное имя пользователя StackExchange.3 (
505446342 байта):Очень похоже на последний скрипт, он читает первые несколько ненужных байтов, а затем
cat
до EOF. Это также работает из-за максимального имени пользователя SE.источник
:0-1/1
вместо:4+4/1-1
? Кроме того, первый случай этого может быть просто-1/1
потому, что блокнот начинается с 0./bin/r
перезаписано.F1R1
в начале, а затем использовать+5
всюду по программе вместо+2/1+4
PHP, 163 байта
источник
Powershell,
165142137127 байт232838 байтов сэкономлено благодаря AdmBorkBork !Создает файл с именем
0
как побочный эффект.Работает, перейдя на соответствующую веб-страницу и выбрав элемент «user-card-name», а затем извлекая нужный текст из innerhtml.
тестирование
источник
Python +
requests
, 126 байтДоступ к API длиннее, чем чтение реальной страницы ...
источник
requests
: pЖеле , 37 байт
Порт HyperNeutrino's Python 2 ответ - иди кредит!
Монадическая ссылка, принимающая число и возвращающая список символов; как полная программа печатает результат.
Примечание: не совсем понятно, почему результат
ŒG
должен быть принудительно превращен в строку (сделано здесь с помощьюṾ
): /Как?
codegolf.stackexchange.com/users/
источник
Стек Exchange Data Explorer , 47 байтов
Попробуйте онлайн!
источник
Mathematica, 126 байт
вход
вывод
источник
Стратос , 22 байта
Попробуй это!
Объяснение:
источник