tôi cảm thấy may mắn


8

Viết hàm ngắn nhất trả về nội dung của kết quả đầu tiên của tìm kiếm Google ("Tôi cảm thấy may mắn").

Thí dụ:

lucky('cat');

Có thể trả lại một cái gì đó như:

<!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>

Câu trả lời:


12

Bash, 46 byte

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

Sử dụng tính năng thực tế tôi cảm thấy may mắn , giống như các câu trả lời khác.

Danh sách đen của Gogle một số tác nhân người dùng (bao gồm cả WGet, cURL và Java), nhưng M dường như chỉ hoạt động tốt.


Tại sao gogle.dethậm chí tồn tại?

3
Để bắt lỗi chính tả. googl.decũng sẽ làm việc
Dennis

2
@professorfish gogle.comtồn tại quá. Đáng tiếc googl.co.ukchuyển hướng đến một trang web quảng cáo tinh ranh.
Beta Decay

@BetaDecay Thật kỳ lạ, nó chuyển hướng tôi đến một trang khác nhau mỗi lần.
qwr

7

Hồng ngọc, 79/145

Tôi đã mượn btnImẹo từ @ rink.attguard.6 cho giải pháp này. Cảm ơn Beta Decay đã rút ngắn 2 ký tự.

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

Tôi cũng có một giải pháp thực sự nhận được kết quả đầu tiên từ trang kết quả, đó là 145 byte.

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}

5

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

Sử dụng file_get_contents

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

Không cho phép khoảng trắng trong cụm từ tìm kiếm, nó chỉ có 87 ký tự:

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

Phiên bản gốc sử dụng cURL

Tôi cho rằng cú pháp mảng ngắn có thể được sử dụng trên 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);}

Mặt khác, đó là năm ký tự nữa với trình khởi tạo mảng thông thường, 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);}

Phiên bản không cho phép khoảng trắng trong cụm từ tìm kiếm : Không cần mã hóa 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);}
Sử dụng hằng số
<?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);
}

Bạn sẽ có thể thay thế "https://google.ca/search?q=".rawurlencode($q)."&btnI=1"bằng"http://google.ca/search?btnI=1&q=".rawurlencode($q)
NinjaBearMonkey

Chỉ cần nhận ra rằng, thay đổi nó cho cả hai câu trả lời của tôi
rink.attguard.6

Bạn đang sử dụng SSL vì bất kỳ lý do cụ thể?
Dennis

Bạn có thể thay thế btnI=1với btnI.
Beta Decay

4

C #, 183 180 178

Đây là lần đầu tiên tôi viết mã bằng C # nên có thể sử dụng cải tiến. Phản hồi được chào đón!

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

Chưa hoàn thành

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

1
Bạn chỉ có thể sử dụng 'DownloadString' và tránh bit Mã hóa.
Geoff

3

CJam, 40 byte

Nghĩ rằng, cuối cùng tôi sẽ gthử phương pháp

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

Điều này tạo ra một phương thức / khối Fcó thể được sử dụng như

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

Đây là cách các chức năng hoạt động trong CJam ..

Không hoạt động trong trình thông dịch trực tuyến, vì vậy bạn sẽ phải tải xuống và sử dụng trình thông dịch Java.

Lưu ý rằng Google từ chối tất cả các yêu cầu với tác nhân người dùng Java, vì vậy bạn sẽ phải bắt đầu CJam với một cờ bổ sung -Dhttp.agent=M


+1 cho CJam và bạn, -1 cho Google. Chúng trả về 403 nếu Tác nhân người dùng là Java. Tôi hy vọng @aditsu sẽ giải quyết điều này.
manatwork

@aditsu - Có kế hoạch nào cho việc đó không?
Tối ưu hóa

2
Điều này sẽ chỉ hoạt động nếu bạn giả mạo tác nhân người dùng bằng cách chuyển, ví dụ, -Dhttp.agent=Mcho trình thông dịch Java.
Dennis

2

Con trăn 3 - 78

Sử dụng gogle.decho ngắn gọn. Chạy như f(query).

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

Nếu bạn muốn có khoảng trắng trong truy vấn của mình, thì đó là 98 ký tự.

f=lambda x:__import__("requests").get("http://gogle.de/search?btnI&q="+x.replace(" "," %20")).text
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.