Este é simples. Dada a entrada de um número, retorne o nome e a pontuação de reputação do usuário do Stack Overflow com esse ID fornecido . Seu programa pode assumir que sempre é fornecido um ID de usuário válido e existente.
Por exemplo: dada a entrada 764357
(que é meu ID do usuário no StackOverflow), o programa retornaria LegoStormtroopr 3,088
(aproximadamente) isso pode mudar.
Você obtém o URL: " /programming//users/ " ou " http://api.stackexchange.com/2.1/users/ " gratuitamente, então sua pontuação é length of your program - 31 or 39
, dependendo do URL que você usa - mas declarar qual é . Isso evita que as pessoas abusem dos encurtadores de URL.
editar: e não chamar uma API personalizada que consulta Stack Overflow e retorna apenas o nome e a pontuação. Mas se você conhece uma API oficial, isso é totalmente legítimo.
edit2: Se você precisar de um exemplo de entrada: Dei meu ID abaixo, fique à vontade para adicionar seu próprio ID, nome de usuário e pontuação abaixo para ajudar outras pessoas. Observe novamente que este é o site principal do estouro de pilha.
764357 returns LegoStormtroopr 3,088
fonte
http://api.stackexchange.com/2.1/users/
também deve ser "gratuito" para evitar penalizar os usuários da API?site=stackoverflow
papel de graça também?Respostas:
Script de shell:
6451 caracteresExemplo de execução:
(Observe que você deve pressionar
^D
depois de digitar a entrada interativamente. Ou simplesmente direcione-a para o comando.)fonte
Ruby:
8470 caracteresExemplo de execução:
fonte
s[/me">(.+)</,1],s[/ation".*?([\d,]+)/,1]
parece funcionargrep
exibiria mais correspondências por apenas "ação").)-ropen-uri
opção. (É obrigatório e incluído na contagem de caracteres.)Python 2.7 - 119
(150 - 31)
Sem regex:
fonte
Python 3, 117
117 = 148 - 31
Eu não acho que pesquisar em código-fonte HTML simples leve a uma solução forte. Por exemplo, algumas coisas estranhas no perfil de alguém podem quebrar suas soluções. Então, eu gostaria de pesquisar usando seletores CSS.
fonte
Javascript 217
Heres uma versão Javascript ungolfed usando a API oficial com JSONP, para começar. Usar o URL exigiria XHR, que deve ser bem detalhado, se encontrar algum tempo, tentarei uma versão mais eficiente.
fonte
Perl 5 (com Mojolicious), 87 - 31 = 56 bytes
Exemplo de execução:
Legível e limpo: 128 - 31 = 97 bytes
Exemplo de execução:
fonte
-Mojo
incluído na contagem? Isso custa 4 caracteres.-ropen-uri
. No entanto, fico feliz em incluí-lo se o seu comentário receber alguns votos positivos, como indicação de que a comunidade deseja contá-los.perl
a-p
opção de normalmente é contada com +1. Com base nisso, conto-Mojo
+4.R: 150-31 = 119
Simplesmente escolhe as primeiras linhas que contêm
h1
(para o nome) e=re
(para a partitura) usandogrep
com argumentovalue=TRUE
(aquiv=T
) e depois divide a string (usandostrsplit
caracteres>
e<
. Inconvenientemente, ele consulta a página duas vezes (daí os dois "Leia n itens" avisos), mas foi mais curto.fonte
Tcl, (231-39) 192
não da maneira mais curta, mas usando a API oficial
E no espírito da pergunta original :
Localiza usuários com essa reputação
fonte
Café mais curto: 143 caracteres (182 - 39)
Isso depende da API sempre retornando as chaves do objeto na mesma ordem, mas retira 7 caracteres.
CoffeeScript: 150 caracteres (189 - 39)
(Observe que o programa solicita "indefinido" - está solicitando o ID do usuário.)
fonte
R - 84
84 = 115 - 31
Simulação:
fonte
101100 - CoffeeScript com jQueryAqui está um violino ; apenas saiba que ele será solicitado quando você abrir a página pela primeira vez, então tenha um ID pronto ou pressione Executar novamente.
Ou podemos ser super hacky para salvar um personagem inteiro!
fonte
Python 2.7 - 112
112 = 143 - 31
Uma versão mais recente e curta que usa algumas das idéias de Steven Rumbalski responde , enquanto ainda usa Regex.
133 = 164 - 31
Aqui está uma versão básica para as pessoas trabalharem, mas tenho certeza que as pessoas podem ficar ainda mais curtas.
fonte
http://stackoverflow.com/users/12340
é 404.499214
vez de12340
GNU Awk: 217 caracteres
Só porque o GNU
awk
suporta TCP nativamente: nenhum módulo / biblioteca / ferramenta externa.Exemplo de execução:
fonte