1 Juli adalah hari Kanada (yay Kanada)! Atau itu? Tampaknya halaman Wikipedia untuk hari ini memiliki banyak konten terkait Kanada, tetapi apakah ada hari lain yang lebih Kanada?
Tugas Anda adalah menulis program atau fungsi yang memerlukan tanggal (bulan dan hari) sebagai input dan mengembalikan atau menampilkan jumlah sebutan "Kanada" di halaman Wikipedia untuk tanggal yang dimasukkan. Beberapa peraturan:
- Tanggal dapat dimasukkan dalam format pilihan apa pun yang masuk akal
- Kiriman Anda harus menarik data dari url
en.wikipedia.org/wiki/Month_Day
. - Hanya
"Canada"
harus dicari dan dihitung termasuk substring, dan hanya dalam judul kasus."Canadian"
tidak dihitung, namun"Canada's"
tidak dihitung. Selama persis, teks case-senstitive"Canada"
ada dalam string, itu adalah kecocokan - Isi halaman dianggap apa-apa dalam yang sesuai
.html
berkas (yaitu apa yang muncul jika Anda men-download sebagai halaman sebagai.html
dan buka di Notepad) - Hasil dapat berupa output ke STDOUT, dikembalikan, atau ditampilkan dengan cara lain yang wajar
Kasus uji:
July 1 => 34
May 14 => 1
Oct 31 => 2
July 4 => 2
Ini adalah golf kode, jadi pengiriman terpendek menang
(Sebagai bonus yang tidak dihargai, saya tertarik untuk melihat hari apa dengan jumlah tertinggi)
Jawaban:
Pyth, 31 byte
Tidak berfungsi pada implementasi online, server menonaktifkan akses Internet. Saya ingin menggunakan http://wki.pe/July_1 tapi sayangnya itu adalah pengalihan sisi klien sehingga mengambil halaman yang salah. Format input adalah
July_1
.Kode ini pada dasarnya hanya:
sumber
Bash,
434240 byteMenggunakan
curl
,,grep
danwc
untuk menghitung kemunculan "Kanada" di laman web tertentu. Seperti jawaban lainnya, input diberikan dalam formatJuly_1
. Ini adalah pertama kalinya saya memposting di Code Golf SE dan saya tidak begitu akrab dengan semua aturan. Umpan balik akan sangat disambut.Tidak menyadari bahwa hasil
STDERR
secara tradisional diabaikan. Terima kasih untuk 3 byte, Dennis !sumber
curl -sL
masih lebih pendek dari ituwget -qO-
?curl
tanpa-s
(atauwget
tanpa-q
).STDERR
diabaikan. Sangat dihargai.STDERR
diabaikan secara default, itu akan lebih pendek untuk menghilangkan-s
seluruhnya.Perl 5, 39 byte
38 byte, ditambah 1 untuk
-pe
bukan-e
Mengambil input seperti
July_1
.Terima kasih kepada busukxuan karena telah menyelamatkan saya tujuh byte.
sumber
Python 3.5,
1171119890 byte( -8 byte (
98 -> 90
) terima kasih kepada alexwlchan )Cukup gunakan pustaka "urllib" bawaan Python untuk mengambil data HTML dan kemudian menghitung kemunculan kata "Kanada" dalam data itu. Akan mencoba dan golf lebih dari waktu ke waktu di mana dan kapan saya bisa. Sebut dengan mengubah nama
lambda
fungsi menjadi apa pun lalu memanggil nama itu seperti fungsi normal yang dibungkusprint()
. Misalnya, jika fungsi itu dinamaiH
, maka Anda akan menyebutnya sepertiprint(H(Month_Day))
.sumber
.decode().count("Canada")
with.count(b"Canada")
.urllib.urlopen
function isn't in a subpackage (from urllib import*
versusfrom urllib.request import*
), and theb"Canada"
could be replaced with"Canada"
since Python 2's strings are bytes by default. I count 81 bytes in Python 2, and it works according to my testing.Mathematica, 60 bytes
Anonymous function. Similarly to the Perl 5 solution, takes input like
July_1
.sumber
PowerShell, 52 bytes
July_1
.iwr
is short forInvoke-WebRequest
.$($args[0])
is first command line argument. Start script asOhCanada.ps1 July_1
.-csplit
is case sensitive split.sumber
C#, 85 bytes
Takes input
d
likeJuly_1
.Dan benar
July_1
- benar Hari Kanada, memiliki referensi terbanyak. DenganFebruary_1
danApril_23
berbagi tempat ke-2 dengan 18"Canada"
s each.Temukan
"Canada"
hari (secara paralel), 207 byte:(Tahun 8 adalah tahun kabisat dengan representasi terpendek). Berpotensi tidak efisien, karena
OrderBy
mungkin menghasilkan> 366 panggilan web, tetapi hanya berlangsung lebih singkat dan tampaknya selesai dalam waktu yang tidak lama.sumber
R,
9996 bytex = fungsi (d) {p = readLines (paste0 (" http://enwp.org/ ", d)); sum (nchar (p) -nchar (gsub ("Canada", "", p))) / 6}Ini mengambil input d dalam bentuk "July_1" dan mengembalikan jumlah Canadas. Itu menghitung kata-kata dengan menghitung jumlah karakter pada halaman, kemudian menghapus kata Kanada dari halaman dan menghitung karakter lagi. Jumlah kemunculan Kanada adalah selisih jumlah ini dibagi dengan jumlah huruf di Kanada, 6.
sunting: Saya menghargai tip di bawah ini tentang mengganti fungsi saya dengan pemindaian.
sumber
x=function(d){
dan mengganti dengand=scan(,'')
membuatnya program alih-alih berfungsi dan menghemat beberapa byte.ES6, 89 byte
Sayangnya Membuka semua janji akan menghukum ukuran: /
sumber
July_1
trik "input dalam format " yang sama dengan sisa pertanyaan untuk menghemat beberapa byte. Anda juga memiliki kesalahan dalam menggunakansplit().length()
, yang akan memberi Anda respons lebih besar dari sasaran.-1
setelah.length
, tetapi Anda dapat menyimpan beberapa byte dengan menghilangkanhttps:
bagian dari URL, dan menggunakansplit'Canada'
(tetapi dengan backticks!) Daripadasplit('Canada')
menyimpan lebih banyak!//
setelahnyahttp
.Ruby + curl, 44 byte
ruby -n
+ 43 byte Mengambil input sepertiJuly_1
.sumber
Clojure, 71 byte
Ya, itu akan baik untuk digunakan
http://enwp.org
tetapi saya kiraslurp
tidak menangani pengalihan (?). Fungsi anonim yang mengambil hari dalam format "July_1".sumber
PHP, 65 byte
sumber