Me siento afortunado

8

Escriba la función más corta que devuelve el contenido del primer resultado de una búsqueda en Google ("Me siento afortunado").

Ejemplo:

lucky('cat');

Podría devolver 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
fuente

Respuestas:

12

Bash, 46 bytes

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

Utiliza la función real Me siento afortunado , al igual que las otras respuestas.

Gogle pone en la lista negra algunos agentes de usuario (incluidos WGet, cURL y Java), pero M parece funcionar bien.

Dennis
fuente
¿Por qué gogle.deexiste incluso?
3
Para atrapar errores tipográficos. googl.defuncionaría también
Dennis
2
@professorfish gogle.comtambién existe. Desafortunadamente, se googl.co.ukredirige a un sitio de anuncios poco fiable.
Beta Decay
@BetaDecay Curiosamente, me redirige a una página diferente cada vez.
qwr
7

Rubí, 79/145

Tomé prestado el btnItruco de @ rink.attendant.6 para esta solución. Gracias Beta Decay por acortarlo en 2 caracteres.

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

También tengo una solución que realmente obtiene el primer resultado de la página de resultados, que es de 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
fuente
5

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

Utilizando file_get_contents

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

Sin permitir espacios en el término de búsqueda, solo tiene 87 caracteres:

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

Versiones originales usando cURL

Supongo que la sintaxis de matriz corta se puede usar en 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);}

De lo contrario, son cinco caracteres más con el 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);}

Versión que no permite espacios en el término de búsqueda : No es necesario codificar la 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 usando 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
fuente
Debería poder reemplazar "https://google.ca/search?q=".rawurlencode($q)."&btnI=1"con"http://google.ca/search?btnI=1&q=".rawurlencode($q)
NinjaBearMonkey
Me
acabo de dar
¿Estás utilizando SSL por alguna razón en particular?
Dennis
Se puede reemplazar btnI=1con btnI.
Beta Decay
4

C #, 183 180 178

Esta es la primera vez que escribo código en C #, por lo que probablemente podría mejorar. Comentarios son bienvenidos!

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)));}

No minificado

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
fuente
1
Puede usar 'DownloadString' y evitar el bit de codificación.
Geoff
3

CJam, 40 bytes

Pensé, finalmente gprobaré el método

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

Esto crea un método / bloque Fque puede usarse como

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

Así es como funcionan las funciones en CJam ..

No funciona en el intérprete en línea, por lo que tendrá que descargar y usar el Java.

Tenga en cuenta que Google niega todas las solicitudes con el agente de usuario de Java, por lo que deberá iniciar CJam con un indicador adicional -Dhttp.agent=M

Optimizador
fuente
+1 para CJam y usted, -1 para Google. Devuelven 403 si el User-Agent es Java. Espero que @aditsu resuelva esto.
manatwork
@aditsu - ¿Algún plan para eso?
Optimizador
2
Esto solo funcionará si falsifica el agente de usuario pasando, por ejemplo, -Dhttp.agent=Mal intérprete de Java.
Dennis
2

Python 3 - 78

Usos gogle.depor brevedad. Corre como f(query).

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

Si desea tener espacios en su consulta, tiene 98 caracteres.

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