Encontrei esta foto na web hoje. Sendo um programador preguiçoso, não quero abrir o google e digitar alguns caracteres. Trabalho demais! Essa é uma tarefa tão importante que deve ser automatizada.
Desafio
Todo mundo sabe que a primeira imagem em um resultado de pesquisa no Google é sempre a melhor. Por isso, deve ser apresentado ao usuário.
Você deve escrever um programa ou função que use uma string como parâmetro e exiba a primeira imagem que encontrar no google ao pesquisar esse nome + as palavras glamour shot
por trás dele.
Consultas de pesquisa do Google
Para pesquisar imagens no google, o URL deve conter o parâmetro de consulta tbm=isch
e q=query
, query
sendo o nome que você deseja pesquisar.
Uma string de consulta válida para o meu nome Bas
seriawww.google.com/search?tbm=isch&q=Bas
Entrada
Seu programa ou função usa um único parâmetro de entrada, que é o nome que você deseja pesquisar no google. Essa seqüência será composto de personagens [a-z]
, [A-Z]
, [0-9]
e (espaço). Essa string pode ser separada por espaço, para procurar uma string separada por espaço no google, é necessário substituir os espaços por
+
. Por exemplo, esta é uma consulta válida:
www.google.com/search?tbm=isch&q=Bassdrop+Cumberwubwubwub+glamour+shot
Resultado
A imagem pode ser desenhada na tela ou salva em um arquivo (em qualquer formato).
Se o primeiro resultado da pesquisa no google for um arquivo gif, você poderá mostrar o gif ou qualquer quadro desse gif.
Casos de teste
Execute esse snippet para ver os resultados esperados
Este é o código-golfe , o código mais curto em bytes vence!
fonte
[a-z0-9]
, editou meu post. Os urls será parecido com os exemplos que eu forneci, nenhuma codificação necessária, apenas um espaço para+
A-Z
que também pode aparecer, a julgar pelo seu exemplo?Respostas:
PowerShell v4 +, 160 bytes
Recebe a entrada
$a
como uma sequência. Faz umInvoke-WebRequest
(iwr
) no local apropriado do Google, usando o bloco de scripts da cadeia interna para-replace
espaços+
na cadeia de entrada. Tomamos.links
isso disso, onde.innerhtml
é a-like
nossa string de entrada. Isso gera os links com a descrição adequada da miniatura. Pegue o primeiro[0]
deles, pegue o seu.innerhtml
e-split
ele entre aspas. O quarto[3]
elemento é o texto dentro daimg src="
parte, por isso fazemos outroiwr
, especificando o-outf
arquivo$a.jpg
na pasta local. Como essas são apenas as miniaturas geradas pelo Google, elas são garantidas em jpg.fonte
google.com
comgoogle.nl
a -1 byteExcel VBA + ,
465332 bytesGolfe:
Sub
Rotina completa que leva a entradan
(abreviação de nome) do tipo esperadoVariant/String
e gera o primeiro resultado da pesquisa de imagens do Google para a consulta desse nome eglamour shot
para uma janela do Internet Explorer.-2 bytes para remover o espaço em branco no
If InStr(1, a.href, "imgres") Then
-2 bytes para mudar
.navigate (a.href)
para.navigate a.href
-27 bytes para reduzir o
for each a in ... if (...) then ... end if .. next
loop parado until ... loop
-10 bytes para condensar
imgres
parares
eencrypted
parayp
-8 bytes para remover initalizers para
j
,k
e assumindo módulo limpo-1 byte para mudar
google.com
paragoogle.nl
-3 bytes para substituir
Dim i as New ...
porSet i=New ...
-8 bytes para remover a
SHDocVw.
referência de classe-12 bytes para remover o
with i
bloco-7 bytes para remoção
i.quit
- isso causa algum vazamento de memória, deixando o Internet Explorer aberto em segundo plano; portanto, é recomendável que a versão completa e não protegida seja usada ou que a tarefa do Internet Explorer seja encerrada pelo gerenciador de tarefas após o uso.-6 bytes para mover
i.navigate
para a sub-rotina auxiliarh
-13 bytes para mover
Do Until ... Loop
para a sub-rotina auxiliar-2 bytes movendo
j=0
para auxiliar a remoção e,j
,,0
(x2)-11 bytes para converter em uma função de janela imediata anônima
-8 bytes para reduzir chamadas de função auxiliar no
for .. next
loop-16 bytes para alterar a saída do
Sheets(1)
objeto de imagem para exibição através doInternetExplorer
objetoUngolfed, 1304 Bytes
Gif de uso
fonte
Vimperator , 30 pressionamentos de teclas
Alternativamente, 27 pressionamentos de tecla se você não precisar da imagem de maior resolução:
Vídeo: https://youtu.be/t8824UjlYt8
Felizmente, o mecanismo de pesquisa padrão no Firefox é o google, e o Vimperator permite digitar dicas por padrão. É mais longo do que o necessário para garantir que sempre funcione, independentemente do que você procura.
Leva entrada pela área de transferência.
Explicação:
Agradecemos a @TaylorScott por encontrar um caso extremo.
fonte
Python 3.6,
247242232 talvez 224 bytesEsta é uma tentativa fofa de resolver este. Ele salvará o arquivo como
p.png
no diretório atual.Para executá-lo com facilidade na linha de comando, basta colocar o conteúdo acima em um arquivo, como
glamour.py
e execute:Atualização 1: versão melhorada com o novo URL do Google
Atualização 2:
Salvei alguns bytes:
f
sinalizador de interpolação de cadeia de caracteres python 3.6 sem alocar osys.argv
para uma variávelBeautifulSoup
chamadaO último é controverso, pois resulta em uma mensagem std.output informando o programador para especificar o analisador para compatibilidade entre plataformas, portanto, pode ser considerado uma saída indesejada.
Aqui está a versão de 224 bytes:
Aqui está a versão de 232 bytes:
Mas a versão mais curta pode ser usada se std.out for redirecionado
/dev/null
ou algo assim: Dfonte
www.google.nl/
ou talvez atégoogle.nl
em vez dehttps://www.google.com.br/
salvar alguns byteshttp://
para que ele funcione com solicitações. Mas o google brasileiro me deu resultados mais engraçados, por isso perdi pontos de diversão: Dn = 'something'; f'{n}_here'
em vez den = 'something'; '{n}_here'.format(n = n)
oun = 'something'; '{}_here'.format(n)
Raquete, 284 byes
Captura de tela:
fonte