Dado um ID de usuário PPCG, produza o nome de usuário atual desse usuário.
Exemplos
Input -> Output
61563 -> MD XF
2 -> Geoff Dalgas
12012 -> Dennis
foo ->
-3 ->
Regras
- A entrada / saída pode ser realizada por qualquer meio permitido.
- A saída deve ser o nome de usuário completo com letras maiúsculas e espaçamento adequados, nada mais e nada menos.
- Se a entrada não for um UserID válido ou o usuário não existir, seu programa não produzirá nada ou ocorrerá erro.
- Seu programa deve funcionar para qualquer usuário válido, mesmo um criado após esse desafio.
- Seu programa não precisa funcionar para o usuário da comunidade.
- Seu programa não precisa funcionar para usuários excluídos.
- Os encurtadores de URL não são permitidos.
Pontuação
O código mais curto em cada idioma vence.
Okx
. Sim, esse é o meu nome.xxx.stackexchange.com/u/123
redireciona paraxxx.stackexchange.com/users/123
Respostas:
05AB1E ,
3534 bytesNão funciona online devido a restrições da Internet.
Código
Explicação
A sequência compactada:
envia a seguinte sequência de caracteres:
Considerando que
<input>
é a entrada do usuário. Depois disso, lemos todos os dados usando.w
e fazemos alguns truques de manipulação de strings nos dados:Quando executado localmente, recebo a seguinte saída:
fonte
„ -¡¬
.Bash,
120112106102807674 bytes-8 bytes porque
wget
é inteligente o suficiente para redirecionar HTTP para HTTPS quando necessário-6 bytes graças a outra
sed
sugestão do vacas charlatão-26 bytes graças ao Digital Trauma
-4 bytes graças ao Gilles -
codegolf.stackexchange.com/u/123
redireciona-2 bytes graças aos
wget
sinalizadores da resposta do Digital TraumaNenhum link do TIO, pois as arenas do TIO não podem acessar a Internet.
Graças às respostas aqui e às pessoas no chat por me ajudarem com isso. Eu usei uma abordagem semelhante à do HyperNeutrino.
wget -qO- codegolf.stackexchange.com/users/$1
baixa a página de perfil do usuário e imprime o arquivo em STDOUT.-q
faz isso silenciosamente (sem informações de velocidade).sed -nr 's/.*User (.*) -.*/\1/p'
procura pela primeira stringUser<space>
e depois imprime até chegar ao final do nome, encontrado usandosed
magia.Resposta anterior que escrevi de forma mais independente (102 bytes):
wget codegolf.stackexchange.com/users/$1 2>y
salva o HTML do perfil do usuário em um arquivo intitulado com seu UserID e despeja STDERR paray
.cat $1
canaliza o arquivo nas partes que cortam o HTML inútil.sed '6!d'
(no lugar dehead -6 | tail -1
) obtém a sexta linha sozinha.cut -c 13-
retira os 13 primeiros caracteres, fazendo com que o nome de usuário inicie no primeiro caractere da sequência.cut -d '&' -f1
corta tudo depois do&
. Isso depende do fato de que um e comercial não pode ter um nome de usuário nem um título HTML.Agora a string é
<username> - Programming Puzzles
sed 's/.\{23\}$//'
foi uma sugestão do vacas charlatão para remover os últimos 15 bytes de um arquivo. Isso obtém o nome de usuário por si só.Aqui está um script completo do bash.
fonte
...TIO arenas can't access the internet
Eles podem, é assim que você pode acessá-lo. : P O código enviado pelo usuário não tem acesso permitido à Internet.</nitpick>
Digital Trauma - Progr
sed
bytecount.Utilitários Bash + GNU, 66
Usa o
-P
sabor CRE regex para fazer uma\K
reinicialização de partida correspondente para uma filtragem de saída muito mais curta.Se o seu sistema já estiver
curl
instalado, podemos usar a sugestão do @Gilles:Utilitários Bash + curl + GNU, 64
fonte
O-
?-O-
envia a saída transferida para STDOUT em vez de um arquivo, por isso pode ser simplesmente canalizada paragrep
grep -Po '"User \K[^"]+'
para salvar 3 bytes.curl -L
é mais curto quewget -qO-
. Você pode usar em/u
vez de/users
.Solicitações Python 2 +, 112 bytes
Nota
quando o SE for totalmente
https
, éhttp
necessário alterar parahttps
, o que fará com que 113 bytes.O início de um perfil de usuário é assim:
O nome de usuário começa no índice 49 e o e comercial ocorre 23 caracteres à direita de onde termina (
- Programming Puzzles
)-3 bytes graças ao StepHen / Mego removendo a
re
importação não utilizada-1 byte graças a Uriel
fonte
re
para soltar 3 byteshttp
por enquanto, mas isso será eliminado eventualmente quando o SE ficar com HTTPS completo.from requests import*
e solter.
para 113 bytesJavaScript (ES6),
11175 bytesFunciona apenas quando executado no domínio PPCG. Retorna um
Promise
objeto que contém o nome de usuário.fonte
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
para salvar 2 bytesfetch
acessar a página do usuário dessa maneira, mas pensei que poderia estar empurrando minha sorte. Mas, como você também sugeriu, eu o editarei. Algum navegador suporta atualmente.done()
? Testei-o rapidamente no Chrome e FF, mas não funcionou lá.Swift 3 , 233 bytes
Amostras de execuções:
fonte
Python 2 , 116 bytes
Apenas achei bom ter uma resposta padrão da biblioteca (que na verdade é bastante decente).
Quando o SE for totalmente
https
, precisamos adicionar mais 1 byte, alternandourlopen('http://...
comurlopen('https://...
.fonte
Cubicamente + Bash,
165413361231 bytes-423 bytes graças a TehPers
Este precisa de três roteiros cúbico (nomeados
1
,2
e3
) e 1 script bash.Os scripts do Cubically são realmente longos, porque ainda não pensei em uma boa maneira de implementar loops.
Bash (84 bytes):
Isso canaliza o primeiro script do Cubically
wget
, depois o arquivo salvo no segundo script do Cubically, depois reverte essa saída, o envia para o terceiro script do Cubically e depois o inverte.1
(385 bytes):Isso imprime
https://codegolf.stackexchange.com/users/
, então o primeiro número inteiro de entrada.2
(680505 bytes):Isso lê os dados desnecessários do arquivo salvo como entrada e depois imprime até o e comercial
Programming Puzzles & Code Golf
.~7@7
lê um personagem e o imprime.F1R1
e:5=7
verifique se a entrada é o e comercial.&6
sai se for.~7@7:5=7&6
é repetido 45 vezes porque existem 15 bytes de dados desnecessários e um nome de usuário StackExchange de no máximo 30 bytes.3 (
505446342 bytes):Muito parecido com o último script, ele lê os primeiros bytes desnecessários, depois
cat
s até EOF. Isso também funciona devido ao nome de usuário máximo do SE.fonte
:0-1/1
vez de:4+4/1-1
? Além disso, a primeira instância pode ser apenas-1/1
porque o bloco de notas começa em 0./bin/r
está sobrescrito.F1R1
no início e usá-lo em+5
todo o programa no lugar de+2/1+4
PHP, 163 bytes
fonte
Powershell,
165142137127 bytes232838 bytes salvos graças ao AdmBorkBork !Cria um arquivo nomeado
0
como efeito colateral.Funciona acessando a página da web apropriada e selecionando o elemento "nome do cartão do usuário" e, em seguida, extraindo o texto apropriado do innerhtml.
Teste
fonte
Python +
requests
, 126 bytesAcessar a API é mais longo do que ler a página real, aparentemente ...
fonte
requests
: pGeléia , 37 bytes
Uma porta da resposta Python 2 do HyperNeutrino - vá dar crédito!
Um link monádico que pega um número e retorna uma lista de caracteres; como um programa completo imprime o resultado.
Nota: não sei ao certo por que o resultado de
ŒG
precisa ser forçado a se tornar uma string (feito aqui comṾ
): /Como?
codegolf.stackexchange.com/users/
fonte
Stack Exchange Data Explorer , 47 bytes
Experimente online!
fonte
Mathematica, 126 bytes
entrada
resultado
fonte
Stratos , 22 bytes
Tente!
Explicação:
fonte