Salam, pegolf kode mulia. Hari ini Anda akan menyelesaikan perdebatan paling kuno dan terkemuka - Emacs atau Vim?
Tantangan Anda adalah menggunakan dua istilah pencarian sebagai input, dan menampilkan yang mana dari istilah-istilah tersebut yang memiliki hasil pencarian Google terbanyak. (Ini jelas sangat adil. Apa maksudmu, bias?)
Berikut adalah beberapa contoh input dan output:
Input: emacs
dan vim
Output: vim
(sama sekali tidak membuat flamewar di komentar)
Input: google
dan microsoft
Output:google
Input: code golf stack exchange
dan code review stack exchange
Output: code golf stack exchange
(yeah!)
Dan berikut adalah beberapa kasus tepi hanya untuk bersenang-senang (dan untuk menguji solusi Anda):
Input: About 1,000,000 results
dan About 100,000 results
Output:About 100,000 results
Input: This will autocotrect
dan Another testcase
Output: Another testcase
(jika Anda tidak mempertimbangkan koreksi otomatis, maka yang pertama akan menang)
Untuk kasus pengujian berikut, Anda harus menghapus #
tanda - tanda dalam istilah pencarian terlebih dahulu, karena mereka bergantung pada istilah yang memiliki jumlah hasil tertentu dan memposting istilah di sini akan merusaknya.
Input: Thissear#chter#mhasno#results
dan Another testcase
Output: Another testcase
(hanya tes untuk hasil nol)
Input: "These exact wo#rds do#n't exi#st# on the Internet"
dan Another testcase
Output: Another testcase
(pengujian "
s)
Input: Abo#ut 1,65#2,85#3,2#86 re#sults
dan Another testcase
Output: Another testcase
(yang ini rumit - istilah pencarian di atas memiliki satu hasil)
Input: "Abo#ut 4#8,234,8#75,14#7 res#ults"
dan Another testcase
Output: Another testcase
(juga rumit - tidak ada hasil, sehingga menampilkan istilah pencarian)
Anda tidak perlu menangani kasus sudut "quoted"
pencarian yang kembali "Tidak ada hasil, sebagai gantinya menunjukkan hasil tanpa tanda kutip" karena itu akan terlalu rumit. Anda juga tidak perlu menangani input dengan jumlah hasil yang sama.
Ini adalah kode-golf , jadi kode terpendek dalam byte akan menang!
Jawaban:
Factor ,
305201196200201188184182179169178171165199171170165163 byteBahasa yang hampir sama dengan Jawa, mengalahkan Ruby ... dan Powershell! : D
Regex yang lebih baik, sekarang. Terima kasih kepada @fede s. untuk 5 byte off!
Atau
159157 jika outputnya bisa seperti{ "vim" 9782948234 }
:Di sisi lain, jika kita ingin tidak dapat diraih, untuk
199196193 byte :Unkillable karena mem-parsing HTML, jadi jauh lebih kuat daripada jawaban menggunakan regex.
sumber
unkillable
metodenya. Ini sebenarnya lebih pendek di PowerShell daripada menggunakan Regex. (Namun masih 2 byte lebih lama dari jawaban regex Anda). Saya tidak akan menyebut PowerShell Succint, nama perintahnya jarang pendek (iwr
kebetulan alias untukinvoke-webrequest
dansort
untuksort-object
, kalau tidak, itu akan menjadi lebih lama)Ruby,
203180 byte+11 byte untuk
-ropen-uri
bendera (plus spasi).Masukan diambil sebagai dua argumen.
Penjelasan URL:
?nord=1
: cegah pengalihan otomatis dari HTTP ke HTTPS&q=#{URI.escape x}
: luput dari permintaan so"
s work&nfpr=1
: tidak ada koreksi otomatisSeluruhnya
map
berubah['emacs','vim']
menjadi[[2150000, 'emacs'], [14900000, 'vim']]
. (Anda dapat melihat ini dengan mengubah.max[1]
di akhir menjadi.inspect
.) Kemudian,max
diambil, yang akan mengambil yang dengan hasil terbanyak, dan[1]
digunakan untuk mendapatkan istilah pencarian.sumber
Thissear#chter#mhasno#results
sekarang akan menampilkan pertanyaan ini di Google :) Menariknya itu menampilkan 2 hasil (setidaknya untuk saya!) - google.com/... NB. Setiap regex yang cocok dengan "Tentang * hasil" akan kehilangan hasil yang ditemukan di halaman ini :(ruby -ropen-uri
alih-alih di dalam file.Dari editor teks yang disebutkan dalam masalah, hanya satu dari mereka yang dapat menyelesaikannya sendiri ...
Emacs: 137 penekanan tombol
Ia mengharapkan istilah pencarian pertama berada di baris pertama dan istilah pencarian kedua berada di baris kedua, dengan kursor di awal buffer.
Bagi mereka yang tidak terbiasa dengan Emacs,
C-s
berartiCtrl-S
.M-z
berartiAlt-Z
(Alt
kemungkinan kunci meta Anda)M-<
berartiAlt-<
atauAlt-Shift-,
C-S-e
caraCtrl-Shift-e
Bagi mereka yang akrab dengan Emacs,
emacs -q
. Itu tidak memuat.emacs
file Anda , jadi setiap paket mewah tidak akan tertarik dengan ini.Penjelasan
Tulis awal dari shell statment elisp
<C-o><C-u><C-k>
Menyimpan argumen dengan baris baru(if(<<C-y><C-y>
Tulislah permulaan pernyataan if dan tempatkan 2 salinan argumen<M-<><C-n>
Pindah ke baris keduaTentukan makro HTTP. Ini mengubah argumen menjadi URL pencarian Google dan kemudian mengembalikan jumlah hasil pencarian.
<F3>
Mulai mendefinisikan makro keyboard<C-a>
Pindah ke awal istilah pencarian.http://google.com/search?nfpr=1&q=
Pertahankan URL pencarian<C-S-e><M-x>r-st<RET> <RET>+<RET>
Ganti semua spasi dengan tanda +.<C-a><C-k><M-x>b-em<RET><C-y><RET>
Emacs mengambil HTML mentah (b-em
kependekan daribrowse-url-emacs
)<C-x><C-q>
Jadikan file dapat ditulisi (diperlukan agar makro tidak membuat kesalahan)<C-s><RET>ts"><RET>
Pindah ke jumlah hasil div (perlu melakukan pencarian reguler karena makro emacs bergantung pada isearch untuk bekerja)<M-z><
Potong teks dari diff (ini sebabnya diperlukan)<C-x>0
Beralih kembali ke buffer asli<C-y>0 r
;; Kembalikan hasilnya pada baris ('0 r' tidak menangani hasil)<C-a><C-M-s><RET>[0-9]<RET><C-b><M-z> <C-a><C-y><C-k>
;; Ekstrak nomor dari string.<C-S-a><M-x><up><up><RET>,<RET><RET>
Strip koma keluar dari nomor tersebut<F4>
Selesaikan makro keyboardTurun ke bawah dan jalankan makro keyboard di baris berikutnya.
<C-n>
Pergi ke baris berikutnya<F4>
Ulangi makro sekali.Selesaikan pernyataan elisp dan jalankan
<C-e>)(next-line)())
Selesaikan pernyataan elisp<C-x><C-e>
Evaluasilah perintah elisp<C-n><C-a><C-k>
Bunuh argumen yang menang<C-x>h<DEL>
Hapus yang lainnya<C-y>
Rekatkan argumen yang menangMenjalankannya Sendiri
Untungnya Anda tidak perlu mengetik semua penekanan tombol dengan sempurna! Daging dan kentang semuanya dalam makro yang bisa Anda salin dan tempel. Makro dapat disalin dan ditempelkan ke emacs!
1. Edit makro keyboard
<C-x><C-k><C-e>
2. Tempel ini ke seluruh buffer (tempel seharusnya
<C-y>
)<C-c><C-c>
untuk menyimpan makro.<F4>
untuk menjalankan makro (atau jalankan sendiri untuk mencoba)Peringatan
<C-x><k> search<TAB>
<input type="submit" name="submit" value="Submit"...>
, maka ini kemungkinan terjadi.<C-x><C-b>
dan memilih buffer dengan istilah pencarian di dalamnya).sumber
Of the text editors mentioned in the problem, only one of them can solve this on its own...
apakah itu benar? apakah benar-benar tidak ada perpustakaan HTTP untuk vimscript?curl
dan mendapatkan efek yang sama. (tapi kemudian jawaban Anda harus menunjukkan bahwa itu vim + curl).Java,
828800783744739687 bytesumber
args
bukannya StdIn?Python 3,
227226208213226220221206202200198 byteTetapkan lambda ke sesuatu untuk menyebutnya.
Menggunakan perpustakaan permintaan .
Tidak Disatukan:
sumber
NameError: name 'quote' is not defined
quote
kembaliurllib.parse.quote
setelah impor absolut.Powershell,
175, 172 byteMenampilkan skor serta nama akan memotong 2 byte lebih banyak.
Ini menggunakan
unkillable
fitur yang sama dengan196 Byte
Factor answer (Parsed HTML) dan memotong dari jawaban regex sebelumnya.sumber
Racket,
360337 byte0.o
Ada alasan mengapa mereka menyebutnya Lost In a Sea of Parentheses.
Tidak Disatukan:
sumber