estou me sentindo com sorte

8

Escreva a função mais curta que retorne o conteúdo do primeiro resultado de uma pesquisa no Google ("Estou com sorte").

Exemplo:

lucky('cat');

Pode retornar algo como:

<!DOCTYPE html>
<html>
  <head>
    <title>Cats are cool</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h1>CAAAAAAAAAAATSSSSSSSSSS!!!!!!!!</h1>
    <p>
      Cats are so cool!
    </p>
  </body>
</html>
SteeveDroz
fonte

Respostas:

12

Bash, 46 bytes

l()(wget -UM -qO- "gogle.de/search?btnI&q=$1")

Usa o recurso atual que estou sentindo sorte , assim como as outras respostas.

O Gogle coloca na lista negra alguns agentes de usuários (incluindo WGet, cURL e Java), mas M parece funcionar bem.

Dennis
fonte
Por que gogle.deexiste mesmo?
3
Para pegar erros de digitação. googl.defuncionaria também.
Dennis
2
O @professorfish gogle.comtambém existe. Infelizmente, ele é googl.co.ukredirecionado para um site de anúncios desonesto.
Beta Decay
@BetaDecay Curiosamente, ele me redireciona para uma página diferente a cada vez.
Qd #
7

Rubi, 79/145

Peguei emprestado o btnItruque de @ rink.attendant.6 para esta solução. Obrigado Beta Decay por reduzi-lo em 2 caracteres.

require'open-uri'
f=->q{URI(URI.escape"http://gogle.de/search?btnI&q="+q).read}

Eu também tenho uma solução que realmente obtém o primeiro resultado da página de resultados, que é 145 bytes.

require'open-uri'
f=->q{open(URI.extract(URI(URI.escape"http://google.com/search?q=#{q}").read.split('class="r"')[1])[0].split("&amp;")[0]).read}
britishtea
fonte
5

PHP, 157 105/87 102/87 100/85

Usando file_get_contents

<?php function l($q){return file_get_contents("https://google.ca/search?btnI&q=".rawurlencode($q));}

Sem permitir espaços no termo de pesquisa, são apenas 87 caracteres:

<?php function l($q){return file_get_contents("https://google.ca/search?q=$q&btnI");}

Versões originais usando cURL

Suponho que sintaxe de matriz curta possa ser usada no PHP 5.4+:

<?php function l($q){$ch=curl_init("https://google.ca/search?btnI=1&q=".rawurlencode($q));curl_setopt_array($ch,[19913=>1,52=>1]);return curl_exec($ch);}

Caso contrário, são mais cinco caracteres com o inicializador de matriz normal, 162:

<?php function l($q){$ch=curl_init("https://google.ca/search?btnI=1&q=".rawurlencode($q));curl_setopt_array($ch,[19913=>1,52=>1]);return curl_exec($ch);}

Versão que não permite espaços no termo de pesquisa : Não há necessidade de codificação de URL (138):

<?php function l($q){$ch=curl_init("https://google.ca/search?q=$q&btnI=1");curl_setopt_array($ch,[19913=>1,52=>1]);return curl_exec($ch);}
Ungolfed using constantes
<?php
function l($q){
$ch = curl_init("https://google.ca/search?btnI=1&q=" . rawurlencode($q));
curl_setopt_array($ch, array(
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_FOLLOWLOCATION => 1
  ));
return curl_exec($ch);
}
rink.attendant.6
fonte
Você deve ser capaz de substituir "https://google.ca/search?q=".rawurlencode($q)."&btnI=1"por"http://google.ca/search?btnI=1&q=".rawurlencode($q)
NinjaBearMonkey 13/10
Só percebi que, mudando-o para ambas as minhas respostas
rink.attendant.6
Você está usando SSL por algum motivo específico?
Dennis
Você pode substituir btnI=1por btnI.
Beta Decay
4

C #, 183 180 178

Esta é a primeira vez que escrevo código em C #, provavelmente usando melhorias. Comentários são bem-vindos!

string l(string q){return System.Text.Encoding.UTF8.GetString((new System.Net.WebClient()).DownloadData("https://google.ca/search?btnI&q="+System.Web.HttpUtility.UrlEncode(q)));}

Desminificado

string l(string q) {
    return System.Text.Encoding.UTF8.GetString(
        (new System.Net.WebClient()).DownloadData(
            "https://google.ca/search?btnI&q=" + System.Web.HttpUtility.UrlEncode(q)
        )
    );
}
rink.attendant.6
fonte
1
Você pode simplesmente usar 'DownloadString' e evitar o bit de codificação.
Geoff
3

CJam, 40 bytes

Pensei, finalmente vou tentar o gmétodo

{"gogle.de/search?btnI&q="\S/"%20"*+g}:F

Isso cria um método / bloco Fque pode ser usado como

{"gogle.de/search?btnI&q="\S/"%20"*+g}:F; "cats and dogs"F

É assim que as funções funcionam no CJam.

Como o intérprete on-line não funciona, você deverá fazer o download e usar o Java.

Observe que o Google nega todas as solicitações com o agente de usuário Java, portanto, você terá que iniciar o CJam com um sinalizador adicional -Dhttp.agent=M

Optimizer
fonte
+1 para CJam e você, -1 para o Google. Eles retornam 403 se o User-Agent for Java. Espero que o @aditsu resolva isso.
manatwork
@aditsu - Algum plano para isso?
Optimizer
2
Isso só funcionará se você falsificar o agente do usuário passando, por exemplo, -Dhttp.agent=Mpara o interpretador Java.
Dennis
2

Python 3-78

Usa gogle.depara concisão. Executar como f(query).

f=lambda x:__import__("requests").get("http://gogle.de/search?btnI&q="+x).text

Se você deseja ter espaços em sua consulta, são 98 caracteres.

f=lambda x:__import__("requests").get("http://gogle.de/search?btnI&q="+x.replace(" "," %20")).text
Beta Decay
fonte