Tugas Anda adalah membuat program yang, diberi string masukan, akan menampilkan hasil Google autocomplete pertama untuk pencarian itu. Format input / output terserah Anda.
Aturan
- Program Anda harus mengambil 1 input, string, dan menampilkan hasil saran autocomplete / auto-fill top Google. Format input / output terserah Anda. Pastikan untuk menyebutkan apa format I / O Anda.
- Jelas, mengakses Internet diperbolehkan.
- Penyingkat URL (seperti bit.ly, TinyURL, dll.) Dilarang keras . Anda harus mengambil hasil autocomplete dari URL ini: http://suggestqueries.google.com/complete/search?client=your_browser&q=your_query atau http://google.com/complete/search?client=your_browser&q=your_query . Anda diizinkan mengasumsikan nama browser apa pun (atau string, untuk hal ini) untuk
client
. Dalam program yang saya tulis , saya menganggap Chrome. Nama atau string browser apa pun harus berfungsi. Anda diizinkan meneruskan opsi apa pun ke halaman web selama Anda menggunakan beberapa varian http://suggestqueries.google.com/complete/search . - Harap berikan penjelasan tentang cara kerja program Anda. Itu tidak wajib, tapi saya sangat menyarankannya.
- Semua celah standar dilarang keras .
Uji Kasus
Ini terus berubah, jadi edit posting ini jika ini menjadi ketinggalan zaman.
'how to'
=> 'how to make slime'
'code golf'
=> 'code golf languages'
'you'
=> 'youtube'
'g'
=> 'google' (why would you google 'google'?)
Ini adalah kode-golf , jadi semoga kode terpendek menang dan programmer terbaik ...
output=toolbar
, kita tidak harus menentukan klien sama sekali.https -> http
(simpan 1 byte), hapuswww.
(simpan 4 byte),google.com -> google.us
(simpan 1 byte) atau genapgoogle.com -> g.cn
(simpan 6 byte; saya tidak yakin mengapa ini masih berfungsi, tetapi tampaknya masih berfungsi pada 20170424)Jawaban:
Zsh + coreutils + w3m,
887168 byteBeralih dari Bash ke Zsh disimpan 3 byte.
Terima kasih kepada @FatalMerlin untuk URL yang lebih pendek, menghemat 17 byte!
Contoh dijalankan
sumber
make(1)
lendir .Vim 8 + unimpaired.vim ,
938985707371 byteSebagai bonus, byte terakhir terlihat seperti mengedip pada Anda
;D
Karena ini mengandung karakter yang tidak dicetak, penjelasannya berisi substitusi (dan saya telah mengganti bagian pra-pertanyaan dari url dengan[url]
, untuk singkatnya):Sejauh menjalankan berjalan, itu berfungsi dengan baik jika Anda menyimpannya ke file bernama
script
dan dijalankan denganvim -s script input.txt
di macOS, setidaknya. Tidak berfungsi jika Anda menambahkan-u NONE
, tetapi berfungsi dengan baik jika saya.vimrc
kosong. Saya menganggap itu menggunakan sesuatu dari sistem.vimrc
untuk membuat URL berfungsi. Ini berarti, bagaimanapun, bahwa itu tidak berfungsi di V, jadi tidak ada tautan TIO.Beberapa kasus uji lagi:
Yang benar-benar saya butuhkan adalah cara untuk membuka URL dengan spasi di dalamnya. Menggantinya dengan yang
+
pertama terlalu banyak byte!sumber
+
?filetype plugin on
:r [url]?client=opera&q=^R"
bukanq:ir [url]?client=opera&q=<esc>p
.^R
adalah byte sebenarnya yang dikirim ketika Anda menekan <Cr>, bukan kunci^
danR
bersama - sama, jadi itu hanya dihitung sebagai satu byte.http://google.com/complete/search?client=hp&q=your_query
(client=gma
=> JSON polos dan teks yang lebih pendek.).Python + meminta
121117103 bytesumber
JavaScript, 109 Bytes
Promise
, Anda harus menyukainya, tetapi manusia itu verbose! Ini menggunakan jawabanfetch()
, janji berbasis mengambil API hadir dalam browser modern. Janji bekerja dengan mendirikan penangan untuk tindakan async di awal, seperti callback, tapi lebih baik. The.then()
mengambil fungsi yang akan disebut dengan hasil dari tindakan async..then(r=>r.json())
menggunakan.json()
metode respons untuk mengubah array teks menjadi variabel yang dapat dimanipulasi, yang kedua.then()
hanya menarik respons pertama.Pemakaian:
sumber
.then(r=>r.json()).then(r=>r[1][0])
->.then(r=>r.json()[1][0])
Nikmati 11 karakter lebih sedikit ;-).json()
mengembalikan Janji, async itu, untuk beberapa alasanC #,
192112111 BytesDisimpan 80 Bytes berkat @TheLethalCoder. Terima kasih telah memformat ulang kode saya, saya tidak tahu itu diizinkan untuk meninggalkan Kelas dan Metode Tubuh sekitarnya :)
Disimpan Byte lain dengan mengganti
gma
denganhp
, seperti tidak peduli untuk parsing dan hanya ada beberapa omong kosong sebelum respon tubuh.Saya secara brutal memaksa API untuk menemukan
gma
danhp
.sumber
Groovy, 122 byte
Pada dasarnya:
Dapatkan teks dari titik akhir.
Hapus bagian dengan tanda kurung di bagian akhir, ini bukan sintaks yang valid.
Parsing bit yang tersisa sebagai array asyik.
Ambil elemen kedua dari array hasil.
sumber
PowerShell,
133115 byteContoh dijalankan
baris perintah jendela CMD:
PowerShell konsol:
sumber
R, 111 byte
Sudah lama sejak saya terakhir datang ke sini tetapi mencobanya:
Menggunakan paket
jsonlite
untuk mengubah string yang diambil darireadLines()
menjadi objek daftar.Selanjutnya ekstrak elemen kedua, misalnya (memberikan peringatan bahwa kita tidak perlu peduli):
sumber
C #, 127 bytes
Versi lengkap dan terformat:
sumber