Biorąc pod uwagę identyfikator użytkownika PPCG, wyświetl aktualną nazwę użytkownika tego użytkownika.
Przykłady
Input -> Output
61563 -> MD XF
2 -> Geoff Dalgas
12012 -> Dennis
foo ->
-3 ->
Zasady
- Wejścia / wyjścia można pobierać dowolnymi dozwolonymi środkami.
- Dane wyjściowe muszą być pełną nazwą użytkownika z odpowiednią wielkimi literami i odstępami, niczym więcej i niczym innym.
- Jeśli dane wejściowe nie są prawidłowym identyfikatorem użytkownika lub użytkownik nie istnieje, program nie powinien wyświetlać żadnych danych wyjściowych lub błędów.
- Twój program musi działać dla każdego ważnego użytkownika, nawet takiego utworzonego po tym wyzwaniu.
- Twój program nie musi działać dla użytkownika Community.
- Twój program nie musi działać dla usuniętych użytkowników.
- Skracacze URL są niedozwolone.
Punktacja
Wygrywa najkrótszy kod w każdym języku.
Okx
. Tak, tak mam na imię.xxx.stackexchange.com/u/123
przekierowuje doxxx.stackexchange.com/users/123
Odpowiedzi:
05AB1E ,
3534 bajtówNie działa online z powodu ograniczeń internetowych.
Kod
Wyjaśnienie
Skompresowany ciąg:
wypycha następujący ciąg:
Natomiast
<input>
dane wejściowe użytkownika. Następnie odczytujemy wszystkie dane za pomocą.w
i wykonujemy kilka operacji manipulacji ciągiem na danych:Po uruchomieniu lokalnym otrzymuję następujące dane wyjściowe:
źródło
„ -¡¬
.Bash,
120112106102807674 bajty-8 bajty, ponieważ
wget
jest silny na tyle, aby przekierowanie HTTP HTTPS razie potrzeby-6 bajty dzięki innym
sed
sugestii krów kwak-26 Bajty dzięki cyfrowemu Trauma
-4 Bajty dzięki Gilles -
codegolf.stackexchange.com/u/123
przekierowania-2 Bajty dzięki cyfrowemu uraz w zwrotna
wget
flagiBrak łącza TIO, ponieważ areny TIO nie mogą uzyskać dostępu do Internetu.
Dzięki odpowiedziom tutaj i osobom na czacie za pomoc w tym. Zastosowałem podejście podobne do HyperNeutrino.
wget -qO- codegolf.stackexchange.com/users/$1
pobiera stronę profilu użytkownika i drukuje plik do STDOUT.-q
robi to cicho (brak informacji o prędkości).sed -nr 's/.*User (.*) -.*/\1/p'
szuka pierwszego łańcuchaUser<space>
, a następnie drukuje, aż do końca nazwy, znalezionego za pomocąsed
magii.Poprzednia odpowiedź, którą napisałem bardziej niezależnie (102 bajty):
wget codegolf.stackexchange.com/users/$1 2>y
zapisuje profil użytkownika HTML do pliku o nazwie z identyfikatorem użytkownika i zrzuca STDERR doy
.cat $1
potokuje plik do części, które odcinają niepotrzebny kod HTML.sed '6!d'
(w miejscuhead -6 | tail -1
) sam otrzymuje szóstą linię.cut -c 13-
usuwa pierwsze 13 znaków, dzięki czemu nazwa użytkownika zaczyna się od pierwszego znaku ciągu.cut -d '&' -f1
tnie wszystko po&
. Polega to na tym, że znak ampersand nie może znajdować się w nazwie użytkownika ani w tytule HTML.Teraz ciąg jest
<username> - Programming Puzzles
sed 's/.\{23\}$//'
była sugestią znachora krów, aby usunąć ostatnie 15 bajtów pliku. Otrzymuje nazwę użytkownika sama.Oto pełny skrypt bash.
źródło
...TIO arenas can't access the internet
Mogą, w ten sposób możesz uzyskać do niego dostęp. : P Kod przesłany przez użytkownika nie ma dostępu do Internetu.</nitpick>
Digital Trauma - Progr
sed
bajt.Narzędzia Bash + GNU, 66
Używa
-P
smaku regex CRE do\K
resetowania początku dopasowania celu znacznie krótszego filtrowania danych wyjściowych.Jeśli twój system już ma
curl
zainstalowany, możemy skorzystać z sugestii @Gilles:Bash + curl + narzędzia GNU, 64
źródło
O-
?-O-
wysyła pobrane dane wyjściowe do STDOUT zamiast pliku, dzięki czemu można je po prostu przesłać dogrep
grep -Po '"User \K[^"]+'
aby zapisać 3 bajty.curl -L
jest krótszy niżwget -qO-
. Możesz użyć/u
zamiast/users
.Żądania w języku Python 2 +, 112 bajtów
Uwaga
gdy SE przejdzie w pełni
https
,http
należy zmienić nahttps
, co spowoduje 113 bajtów.Początek profilu użytkownika wygląda następująco:
Nazwa użytkownika zaczyna się od indeksu 49, a znak ampersand składa się z 23 znaków po prawej stronie miejsca, w którym się kończy (
- Programming Puzzles
)-3 bajty dzięki StepHen / Mego poprzez usunięcie nieużywanego
re
importu-1 bajt dzięki Urielowi
źródło
re
więc możesz upuścić 3 bajtyhttp
na razie, ale zostanie to wycofane, gdy SE przejdzie na pełną HTTPS.from requests import*
i upuśćr.
na 113 bajtówJavaScript (ES6),
11175 bajtówDziała tylko, gdy jest uruchamiany przez domenę PPCG. Zwraca
Promise
obiekt zawierający nazwę użytkownika.źródło
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
aby zapisać 2 bajtyfetch
żeby w ten sposób wejść na stronę użytkownika, ale pomyślałem, że może to sprzyjać mojemu szczęściu. Ale widząc, jak to zasugerowałeś, dokonam edycji. Czy któraś przeglądarka obsługuje obecnie.done()
? Szybko przetestowałem to w Chrome i FF, ale tam nie działało.Szybkie 3 233 bajty
Przykładowe przebiegi:
źródło
Python 2 , 116 bajtów
Pomyślałem, że miło jest mieć standardową odpowiedź biblioteki (która jest dość przyzwoita).
Kiedy SE przejdzie w pełni
https
, musimy dodać jeszcze 1 bajt, przełączając zaurlopen('http://...
pomocąurlopen('https://...
.źródło
Cubically + Bash,
165413361231 bajtów-423 bajty dzięki TehPers
Wymaga to trzy skrypty kubiczną (nazwane
1
,2
i3
) i 1 skrypt bash.Skrypty sześcienne są naprawdę długie, ponieważ jeszcze nie pomyślałem o dobrym sposobie implementacji pętli.
Bash (84 bajty):
Spowoduje to wstawienie pierwszego skryptu Cubic do
wget
, a następnie zapisanego pliku do drugiego skryptu Cubically, a następnie odwrócenie danych wyjściowych, przeniesienie do trzeciego skryptu Cubically, a następnie odwrócenie.1
(385 bajtów):To drukuje
https://codegolf.stackexchange.com/users/
, a następnie pierwszą liczbę całkowitą wejścia.2
(680505 bajtów):Odczytuje niepotrzebne dane z zapisanego pliku jako dane wejściowe, a następnie drukuje do ampersand
Programming Puzzles & Code Golf
.~7@7
odczytuje znak i drukuje go.F1R1
i:5=7
sprawdź, czy wejście to znak ampersand.&6
wychodzi, jeśli tak jest.~7@7:5=7&6
powtarza się 45 razy, ponieważ istnieje 15 bajtów niepotrzebnych danych i 30-bajtowa nazwa użytkownika StackExchange.3 (
505446342 bajtów):Bardzo podobny do ostatniego skryptu, odczytuje kilka pierwszych niepotrzebnych bajtów, a następnie
cat
s do EOF. Działa to również ze względu na maksymalną nazwę użytkownika SE.źródło
:0-1/1
zamiast:4+4/1-1
? Pierwszym tego przykładem może być to,-1/1
że notatnik zaczyna się od 0./bin/r
jest zastąpiony.F1R1
na początku, a następnie użyj w+5
całym programie zamiast+2/1+4
PHP, 163 bajty
źródło
PowerShell,
165142137127 bajtów232838 bajtów zapisanych dzięki AdmBorkBork !Tworzy plik nazwany
0
jako efekt uboczny.Działa, przechodząc do właściwej strony i wybierając element „user-card-name”, a następnie wyodrębniając odpowiedni tekst z wewnętrznej strony.
Testowanie
źródło
Python +
requests
, 126 bajtówDostęp do interfejsu API jest dłuższy niż czytanie faktycznej strony najwyraźniej ...
źródło
requests
: pGalaretka , 37 bajtów
Port odpowiedzi na pytanie Python 2 HyperNeutrino - idź, daj kredyt!
Monadyczny link pobierający liczbę i zwracający listę znaków; jako pełny program wypisuje wynik.
Uwaga: nie jestem do końca pewien, dlaczego wynik
ŒG
musi być zmuszony do przekształcenia się w ciąg znaków (tutaj wykonano za pomocąṾ
): /W jaki sposób?
codegolf.stackexchange.com/users/
źródło
Eksplorator danych wymiany stosu , 47 bajtów
Wypróbuj online!
źródło
Mathematica, 126 bajtów
Wejście
wynik
źródło
Stratos , 22 bajty
Spróbuj!
Wyjaśnienie:
źródło