Ketika Anda mencari sesuatu di Google , itu dengan mudah memberikan pesan di dekat bagian atas halaman mengatakan sesuatu seperti About 53,000,000 results (0.22 seconds)
. (Angka-angka berubah tergantung pada apa yang dicari tentu saja.)
Dalam tantangan ini, Anda akan menulis sebuah program yang menggambar grafik ASCII logaritmik dari jumlah hasil yang diberikan oleh Google ketika semua awalan yang tidak kosong dari frasa pencarian tertentu dicari.
Sebuah pencarian frase didefinisikan sebagai satu atau lebih string karakter alfanumerik huruf kecil, dipisahkan oleh satu spasi dari satu sama lain. Di Regex, frase pencarian adalah (?:[a-z0-9]+ )*[a-z0-9]+
.
Jadi im ok
, r
, dan 1a 2
semua pencarian frase, tapi I'm OK
, R
, 1a 2
, dan , tidak.
(Pembatasan karakter diterapkan karena Google jarang mempertimbangkan huruf besar atau simbol khusus. Melarikan karakter non-alfanumerik di URL juga merepotkan.)
Spec
Program Anda harus menggunakan frasa pencarian dan angka floating point positif H baik dari stdin atau baris perintah. (Anda dapat menganggapnya valid dan sah-sah saja jika Anda memerlukan tanda kutip atau sesuatu di sekitar frasa pencarian.)
Sebagai contoh yang berfungsi mari kita asumsikan frasa pencariannya adalah a car
dan H = 0,75.
Langkah 1:
Kumpulkan awalan yang tidak kosong dari frase pencarian Anda, dan letakkan dalam tanda kutip ganda . Kutipan memastikan bahwa frasa yang tepat akan dicari, menghindari pengalihan 'apakah maksud Anda ...' .
Kecualikan semua awalan yang berakhir dalam ruang seperti a[space]
.
Prefixes
"a"
"a c"
"a ca"
"a car"
Langkah 2:
Cari setiap istilah ini persis seperti yang muncul menggunakan https://www.google.com , dan perhatikan jumlah hasil yang dikembalikan.
Search Term Message Results
"a" About 6,950,000,000 results (0.27 seconds) 6950000000
"a c" About 861,000,000 results (0.27 seconds) 861000000
"a ca" About 2,990,000 results (0.30 seconds) 2990000
"a car" About 53,900,000 results (0.39 seconds) 53900000
Jika istilah pencarian tidak cocok dengan dokumen apa pun , masukkan 0 di Results
kolom.
Langkah 3:
Hitung y = floor(H * log10(r + 1))
untuk setiap baris, di mana r adalah Results
nilainya. H masih 0,75 di sini.
Search Term Results y
"a" 6950000000 7
"a c" 861000000 6
"a ca" 2990000 4
"a car" 53900000 5
Langkah 4:
Atur y
jumlah bilah vertikal ( |
) di atas karakter terakhir dari setiap istilah pencarian yang tidak dikutip, menggunakan spasi untuk mengisi area kosong, dalam semacam grafik batang.
|
| |
| | |
| |||
| |||
| |||
| |||
a car
Grafik ini adalah hasil akhir dari program Anda dan satu-satunya hal yang perlu dihasilkan. Itu harus pergi ke stdout.
Mencetak gol
Ini adalah kode-golf , jadi program terpendek dalam byte menang.
Catatan
- Anda dapat menggunakan penyingkat URL atau alat pencarian / API lainnya asalkan hasilnya akan sama dengan pencarian https://www.google.com .
- Saya tahu bahwa tanda kutip ganda bukanlah cara yang pasti untuk mengecualikan pengalihan "maksud Anda ...". Menambahkan
&nfpr=1
ke URL juga tidak selalu berhasil . Jangan khawatir tentang ketidakakuratan ini. CarilahAbout X results...
pesan apa pun yang muncul, atau aturResults
ke 0 jika tidak ada. - Ada kolom kosong di atas spasi apa pun dalam frasa pencarian dalam grafik.
- Grafik tidak boleh lebih lebar atau lebih tinggi dari yang seharusnya (misalnya dengan spasi putih).
- Tidak apa-apa jika program Anda memiliki efek samping seperti membuka peramban web sehingga laman html / js Google yang samar dapat dibaca saat dirender.
Jawaban:
Ruby,
316295 byteSayangnya, permintaan hanya berhenti bekerja pada tester online yang saya gunakan, jadi saya perlu golf ini lebih lanjut malam ini atau besok.
Penjelasan: Saya mengambil input melalui ARGV. Lalu, saya hanya mengirim permintaan untuk setiap substring yang tidak berakhir di spasi, cari hasilnya melalui regex (dan default
0
jika regex tidak cocok), lalu buat histogram dengan bilah horizontal. Pada akhirnya, saya membalik semua garis dan memindahkannya untuk membuat histogram vertikal.sumber