Saya bermain-main dengan fitur permintaan url Pyth, dan memperhatikan bahwa google selalu memberikan respons dengan panjang yang sedikit berbeda untuk saya, biasanya ~10500
karakter.
Jadi tugas Anda dalam tantangan ini adalah untuk mencetak panjang rata-rata respons html dari http://google.com
.
Spesifikasi
- Anda akan mengambil input
n
yang merupakan jumlah permintaan untuk dibuat. - Untuk setiap permintaan, Anda akan membuat permintaan dapatkan HTTP.
- Anda akan menghitung badan respons (teks html), bukan header.
- Keluarkan rata-rata aritmatika dari panjang respons.
- Anda hanya dapat mengakses url
http://google.com
, bukan yang lain. - Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Output sampel untuk input 10
: 10560.1
(Saya menggunakan Python urllib
untuk itu)
PS: apakah ada yang tahu mengapa google melakukan ini?
http://google.com
selalu mengembalikan 261 byte untuk saya ...https://google.com/ncr
mungkin mengembalikan lebih banyak.http://google.com
selalu mengembalikan 10422 byte untuk saya ...http://google.com
dikirim. Tentu saja ini bukan poin dari tantangan, jadi tantangan harus IMO diedit untuk mencerminkan hal itu.Jawaban:
Utilitas sistem Bash +,
56534948 bytePembaruan: disimpan 4 byte berkat Digital Trauma dan 1 byte lebih banyak berkat Dennis
Dalam jawaban asli saya, saya gunakan
yes
dalam kombinasi denganxargs
untuk meniru loop for. Tetapicurl
dapat menerima sebagai input daftar URL, sehingga hanya output dariyes
yang benar-benar dibutuhkan.Ketika
curl
mengakses google.com , ia menerima 302 redirection page yang memiliki URL baru di bagian body, jadi-L
opsi diperlukan untuk mengikutinya.Jalankan contoh: jawaban dicetak ke STDOUT, saya mengarahkan STDERR hanya untuk kejelasan
Penjelasan: (dari kode yang awalnya dikirim)
Sunting: Saya diganti
wc -m
denganwc
, karena meskipun tanpa argumen ia mencetak 2 statistik lebih banyak daripada yang saya inginkan,dc
skrip yang sama dengan output ini masih berfungsi, karena hitungan yang kami inginkan adalah, dengan senang hati, ditempatkan di atas tumpukan selama penguraian.sumber
xargs
. Terima kasih, saya memperbarui jawabannya.-s
. Output liar ke STDERR diizinkan secara default.MATL , 28 byte
Gif atau tidak terjadi:
Bagaimana itu bekerja
sumber
PowerShell , 48 byte
Penjelasan
1
ke integer input.Invoke-RestMethod
(irm
) beranda google. Hasilnya bukan JSON sehingga akan mengembalikan tubuh kata demi kata alih-alih deserialisasi.Measure-Object
(measure
), dapatkan rata-rata dariLength
properti dari string input (badan).Average
properti yang dihasilkan .sumber
|% A*
itu mungkin, saya selalu menghindarimeasure
karena saya pikir Anda tidak bisa wildcard nama properti ...|? A*
beberapa hal keren. Saya perlu melihat file presentasi saya dan menambahkan hal ini ke utas tips.Java 8,
197184182181 byteGolf:
Tidak Disatukan:
Sumber daya ini bocor, tetapi itu adalah harga kecil yang harus dibayar untuk mencari byte paling sedikit.
sumber
n->{int s=0,i=0;for(;i<n;++i)try{...}catch(Exception e){}return s*1.0/n;}
. Tidak yakin apakah Anda dapat menggantis*1.0/n
dengan pengembalian dengans*1f/n
, tetapi patut dicobafor(;i<n;++i)
dapat diubah menjadifor(;i++<n;)
untuk -1 byte.Pyth, 25 byte
'
adalah fungsi terbuka di Pyth, dan ketika diberi string dimulai denganhttp
, ia melakukan GET resuest ke situs web itu. Nilai kembali adalah daftarbytes
objek. Sayangnya, Pyths
tidak tahu cara menggabungkan objek-objek ini, jadi alih-alihls
, saya gunakanslM
untuk mendapatkan panjang total. Ini dilakukan beberapa kali sama dengan input olehm
, dan hasilnya dirata-rata oleh.O
.sumber
05AB1E , 15 byte
Kode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Ketika dijalankan di penerjemah offline saya mendapatkan yang berikut ini:
sumber
PHP,
9078 bytesumber
join(file())
bukannyafile_get_contents()
menghemat beberapa byte.echo
. Anda juga dapat menggunakan$i
bukan$argv[1]
sebagai pembagi.Mathematica, 58 byte
Fungsi anonim. Mengambil nomor sebagai input, dan mengembalikan nomor sebagai output.
sumber
N@
? Anda tidak mencetaknya, jadi tidak ada alasan untuk memformatnya dengan baik.Python, 102 byte
Atau, jika kita bisa mengembalikan bilangan bulat daripada mengapung, jawabannya bisa 98 byte:
sumber
)for x in[
. Juga, jika Anda membatasi diri Anda untuk Python 3, divisi tersebut akan secara otomatis menjadi divisi float, dan Anda dapat menghapus0.0
.[]
dalam kasus ke-2 -sum
mengambilgenerator
CJam , 23 byte
Tidak bekerja pada TIO karena alasan keamanan.
Uji coba
Bagaimana itu bekerja
sumber
CJam, 27 byte
CJam mengasumsikan HTTP jika tidak ditentukan.
Penjelasan
sumber
Clojure, 102 byte
Tidak Disatukan:
#(count (slurp (clojure.java.io/reader "http://www.google.com")))
adalah fungsi lokal yang menghitung byte dari permintaan http ke google,repeatedly
memanggil fungsi n kali dan membuat daftar dari jumlah yang dikembalikan, mengurangi jumlah hasil bersama, dan akhirnya yang dibagi dengan n untuk membuat rata-rata. Pengurangan dimulai pada 0,0 untuk memaksa hasil menjadi pelampung- jika tidak, pembagian akan menghasilkan rasional. Semuanya dibungkus dalam fungsi anonim yang membutuhkan beberapa kali untuk menyebutkan nama permintaan.sumber
(clojure.java.io/reader)
itu tidak perlu btw. Ini dilakukan secara otomatis di belakang layar jika Anda melewatkan string.Python 3, 95 byte
Solusi rekursif
dimana
n=i=int(input())
meminta perpustakaan
sumber
Python 3 + [Requests](http://docs.python-requests.org/en/master/user/install/#install), 95 bytes
urllib2
adalah pustaka Python asli (pra-instal) docs.python.org/2/library/urllib2.html sehingga siapa pun yang mengunduh Python dapat segera menjalankan kode mereka. Saya tidak bisa menjalankan kode Anda di Python 3 saya tanpa perpustakaan itu.Perl, 66 byte
51 byte + 14 byte untuk
-MLWP::Simple<space>
+1 byte untuk-p
.Solusi mudah menggunakan LWP :: Simple . Itu
get
Fungsi diekspor secara default dan mengembalikan konten respon pada kesuksesan.Perl 5.14+,
9493 byte (hanya modul inti)79 byte + 13 byte untuk
-MHTTP::Tiny<space>
+1 byte untuk-p
.Gunakan HTTP :: Tiny , yang telah menjadi inti sejak Perl 5.14.
Bagaimana itu bekerja
Ini:
adalah sintaks objek tidak langsung yang setara dengan ini:
dan menyimpan tiga byte. The
get
method mengembalikan hashref dengan konten yang disimpan di bawahcontent
kunci.Untuk mendapatkan konten respons yang sebenarnya, kami melakukan:
yang setara dengan:
tetapi menghemat satu byte saat kami menambahkan
length
:sumber
Rebol, 69 byte
sumber
Clojure, 70 byte
Lipatan
n
jarak jauh. Jumlahkan panjang masing-masing permintaan, lalu bagi dengan jumlah permintaan. Karena cara Clojure menangani pembagian, ini mengembalikan sebagian, bukan desimal. Jika ini tidak dapat diterima, saya dapat memperbaikinya dengan biaya beberapa byte.sumber
Ruby, 73 + 10 = 83 byte
Menggunakan
-rnet/http
bendera.sumber
Gangguan Umum + quicklisp / dexador , 23 + 72 = 95 byte
Jika quicklisp diinstal pada sistem, ia akan mengunduh dan menginstal dexador sebagai keharusan.
Pendahuluan:
Kode
Tidak Disatukan:
Penjelasan
(dex:get "http://google.com")
Ini melakukan permintaan web ke google dan mengembalikan lima nilai:
(length (dex:get ...))
Jika Anda tidak meminta sebaliknya, Common Lisp akan membuang semua nilai kembali selain yang pertama, jadi fungsi panjang hanya melihat respons http itu sendiri dan mengembalikan panjang string ini.
(loop :repeat n :sum (length ...))
Ini menghitung panjang respons n kali dan menambahkannya.
(/ (loop ...) n)
Ini membagi panjang yang dijumlahkan dengan n untuk menghitung rata-rata.
(lambda (n) ...)
Ini membungkus tubuh kode dalam fungsi anonim yang mengambil n sebagai argumen dan mengembalikan panjang respons rata-rata untuk permintaan web ke http://google.com .
sumber