Sua tarefa é criar um programa que, com uma sequência de entrada, produza o primeiro resultado de preenchimento automático do Google para essa pesquisa. O formato da entrada / saída é com você.
Regras
- Seu programa deve receber 1 entrada, uma sequência e gerar o resultado principal das sugestões de preenchimento automático / preenchimento automático do Google. O formato da entrada / saída é com você. Apenas certifique-se de mencionar qual é o seu formato de E / S.
- Obviamente, é permitido acessar a Internet.
- Os encurtadores de URL (como bit.ly, TinyURL etc.) são estritamente proibidos . Você deve buscar seus resultados de preenchimento automático neste URL: http://suggestqueries.google.com/complete/search?client=your_browser&q=your_query ou http://google.com/complete/search?client=your_browser&q=your_query . Você tem permissão para assumir qualquer nome de navegador (ou string, nesse caso)
client
. No programa que escrevi , assumo o Chrome. Qualquer nome ou string do navegador deve funcionar. Você tem permissão para passar quaisquer opções para a página da Web, desde que esteja usando alguma variante do http://suggestqueries.google.com/complete/search . - Forneça uma explicação de como seu programa funciona. Não é obrigatório, mas eu recomendo fortemente.
- Todas as brechas padrão são estritamente proibidas .
Casos de teste
Eles estão constantemente mudando; portanto, edite esta postagem se ela estiver desatualizada.
'how to'
=> 'how to make slime'
'code golf'
=> 'code golf languages'
'you'
=> 'youtube'
'g'
=> 'google' (why would you google 'google'?)
Este é o código-golfe , para que o código mais curto ganhe e o melhor programador prospere ...
output=toolbar
, não precisamos especificar um cliente.https -> http
(salvar 1 byte), removerwww.
(salvar 4 bytes),google.com -> google.us
(salvar 1 byte) ou até mesmogoogle.com -> g.cn
(salvar 6 bytes; não sei por que isso ainda funciona, mas parece que ainda está funcionando em 20170424)Respostas:
Zsh + coreutils + w3m,
887168 bytesMudar de Bash para Zsh economizou 3 bytes.
Obrigado a @FatalMerlin pelo URL mais curto, economizando 17 bytes!
Amostra de execução
fonte
make(1)
lodo .Vim 8 + unimpaired.vim ,
938985707371 bytesComo bônus, os últimos bytes parecem estar piscando para você.
;D
Como contém caracteres não imprimíveis, a explicação contém substituições (e substituímos a parte da URL da pré-consulta por[url]
, por questões de brevidade):No que diz respeito à execução, funciona bem se você salvá-lo em um arquivo chamado
script
e executadovim -s script input.txt
no macOS, pelo menos. Não funciona se você adicionar-u NONE
, mas funciona bem se o meu.vimrc
estiver vazio. Suponho que ele esteja usando algo do sistema.vimrc
para fazer o material da URL funcionar. Isso significa, no entanto, que ele não funciona em V, portanto, nenhum link TIO.Mais alguns casos de teste:
O que eu realmente preciso é de uma maneira de abrir uma URL com espaços nela. Substituí-los por
+
primeiro é apenas muitos bytes!fonte
+
?filetype plugin on
:r [url]?client=opera&q=^R"
vez deq:ir [url]?client=opera&q=<esc>p
.^R
é o byte real enviado quando você pressiona <Cr>, não as teclas^
eR
juntos, portanto, conta apenas como um byte.http://google.com/complete/search?client=hp&q=your_query
(client=gma
=> JSON sem formatação e texto mais curto.).Python + solicita
121117103 bytesfonte
JavaScript, 109 bytes
Promise
, você tem que amar, mas o homem é detalhado! Esta resposta usafetch()
uma API de busca baseada em promessa, presente em navegadores modernos. As promessas funcionam estabelecendo manipuladores para ações assíncronas no início, como retornos de chamada, mas melhor. O.then()
assume uma função que será chamada com o resultado da ação assíncrona..then(r=>r.json())
usa o.json()
método de resposta para converter a matriz de texto em uma variável manipulável, a segunda.then()
apenas puxa a primeira resposta.Uso:
fonte
.then(r=>r.json()).then(r=>r[1][0])
->.then(r=>r.json()[1][0])
Desfrute de 11 caracteres menos ;-).json()
retorna uma promessa, é assíncrona, por algum motivoC #,
192112111 bytesEconomizou 80 bytes graças a @TheLethalCoder. Obrigado por reformatar meu código, eu não sabia que era permitido deixar de fora o corpo de classe e método circundante :)
Salve outro Byte substituindo
gma
porhp
, pois isso não importa para a análise e há apenas algumas bobagens antes do corpo da resposta.Eu literalmente forcei a API a encontrar
gma
ehp
.fonte
Groovy, 122 bytes
Basicamente:
Obtenha o texto do ponto final.
Remova a peça com os colchetes no final, isso não é uma sintaxe válida.
Analise o bit restante como uma matriz groovy.
Pegue o segundo elemento da matriz de resultados.
fonte
PowerShell,
133115 bytesAmostra de execução
Linha de comando do Windows CMD:
Console do PowerShell:
fonte
R, 111 bytes
Muito tempo desde a última vez que vim aqui, mas tentei:
Usando o pacote
jsonlite
para converter a string buscadareadLines()
em um objeto de lista.Em seguida, extraia o segundo elemento, por exemplo (emite um aviso que não precisamos nos preocupar):
fonte
C #, 127 bytes
Versão completa e formatada:
fonte