xkcd adalah webcomic favorit semua orang, dan Anda akan menulis sebuah program yang akan membawa sedikit lebih banyak humor kepada kita semua.
Tujuan Anda dalam tantangan ini adalah untuk menulis sebuah program yang akan mengambil angka sebagai input dan menampilkan xkcd dan teks-judulnya (teks mousover).
Memasukkan
Program Anda akan mengambil bilangan bulat positif sebagai input (tidak harus yang memiliki komik yang valid) dan menampilkan xkcd: misalnya, input 1500 harus menampilkan komik "Peta Terbalik" di xkcd.com/1500, dan kemudian cetak judul-teksnya ke konsol atau tampilkan dengan gambar.
Due to their proximity across the channel, there's long been tension between North Korea and the United Kingdom of Great Britain and Southern Ireland.
Test case 2, untuk n = 859:
Brains aside, I wonder how many poorly-written xkcd.com-parsing scripts will break on this title (or ;;"''{<<[' this mouseover text."
Program Anda juga harus dapat berfungsi tanpa input apa pun, dan melakukan tugas yang sama untuk xkcd terbaru yang ditemukan di xkcd.com, dan itu harus selalu menampilkan yang terbaru bahkan ketika yang baru naik.
Anda tidak harus mendapatkan gambar secara langsung dari xkcd.com, Anda dapat menggunakan database lain selama ini up-to-date dan sudah ada sebelum tantangan ini naik. URL pendek, yaitu url tanpa tujuan selain mengarahkan ke tempat lain, tidak diperbolehkan.
Anda dapat menampilkan gambar dengan cara apa pun yang Anda pilih, termasuk di browser. Anda tidak boleh , bagaimanapun, secara langsung menampilkan bagian dari halaman lain dalam iframe atau yang serupa. CLARIFICATION: Anda tidak dapat membuka halaman web yang sudah ada sebelumnya, jika Anda ingin menggunakan browser Anda harus membuat halaman baru . Anda juga harus benar-benar menampilkan gambar - mengeluarkan file gambar tidak diperbolehkan.
Anda dapat menangani kasing yang tidak ada gambar untuk komik tertentu (mis. Interaktif atau program dilewati angka yang lebih besar dari jumlah komik yang telah dirilis) dengan cara yang Anda inginkan, termasuk melemparkan pengecualian , atau mencetak sekurang-kurangnya string karakter tunggal, selama entah bagaimana itu menandakan kepada pengguna bahwa tidak ada gambar untuk input itu.
Anda hanya dapat menampilkan gambar dan menampilkan judul-teksnya, atau menampilkan pesan kesalahan untuk komik yang tidak valid. Output lain tidak diizinkan.
Ini adalah tantangan kode-golf , sehingga byte paling sedikit menang.
import antigravity
dengan Python;)n=404
xkcd.com/404 adalah halaman 404.xkcd is everyone's favorite webcomic
[Rujukan? ]Jawaban:
Perl + curl + feh,
868475 byteMembutuhkan
-p
sakelar. Saya telah memperhitungkan ini dalam hitungan byte.sumber
?
di grup pertandingan pertama. Anda bisa menggunakan-p
dan$_=$2
bukannyaprint$2
, tetapi kemudian teks judul dicetak hanya setelah feh ditutup. Tidak yakin apakah itu valid.-p
tetapi tidak yakin bagaimana perasaan OP tentang hal itu.PowerShell v3 +
11099107103 BytesTerima kasih kepada Timmy karena telah membantu menghemat beberapa byte dengan menggunakan penugasan sebaris.
Jika tidak ada argumen yang dilewatkan maka
$args
adalah nol dan itu hanya akan mendapatkan komik saat ini. Unduh gambar, dengan mencocokkannya dengan teks alternatif, ke dalam file di direktori skrip yang sedang berjalan. Kemudian tampilkan dengan penampil default jpg's. Teks alt kemudian ditampilkan ke konsol.iwr
adalah alias untukInvoke-WebRequest
Jika nomor yang dilewati (atau input yang tidak valid untuk hal ini) tidak cocok dengan proses gagal dengan setidaknya 404 kesalahan.
sumber
Otomatis , 440 byte
Ya, panjang, tapi stabil.
Pertama-tama, ini tidak menggunakan RegEx untuk mengikis situs (karena saya tidak punya waktu untuk menguji ini pada semua komik), melainkan menggunakan Internet Explorer API untuk beralih melalui
img
tag DOM sampai menemukan satu dengan teks judul.Aliran biner dibaca dari URL gambar dan dirender ke dalam bitmap menggunakan GDIPlus. Ini kemudian ditampilkan dalam GUI yang bagus dan berukuran otomatis dengan tooltip yang sebenarnya untuk membuatnya berperilaku hampir persis seperti situs web.
Berikut ini adalah test case (
_(859)
):)
sumber
Powershell, 93 Bytes
Versi 93 Byte untuk menggunakan penampil gambar lokal.
Disimpan 2 byte dengan menghapus doublequote yang tidak perlu, lalu banyak lagi dengan menggunakan
("http:"+$n.src)
alih-alih"https://"+$n.src.trim("/")
- karenaimg
src//
sudah ada di dalamnya, dan xkcd tidak memerlukan https.$n=(iwr "xkcd.com/$args").images|?{$_.title};$n.title;saps ("https://"+$n.src.trim("/"))
sangat mirip dengan jawaban Matts PowerShell, (mungkin seharusnya komentar tetapi reputasi rendah)
Sebaliknya ini membuka tab / jendela baru di browser default, dan hal-hal lain, menghemat beberapa byte.
iwr
adalah alias untukInvoke-WebRequest
saps
adalah alias untukStart-Process
yang membuka 'itu' dalam konteks default.sumber
saps
keiwr
dan append `x.jpg -OutF;. Ii x *` sampai akhir jika Anda ingin membuka di default lokal penampil gambar.R,
358328310298 byteDengan baris dan komentar baru:
Cuplikan layar kasus uji:
untuk x = 1500:
untuk x kosong:
kasus ketika gambar adalah jpeg:
x = 859:
sumber
plot.new();rasterImage(...)
.xaxs
danyaxs
karena hasilnya masih akan proporsional.PHP, 95 byte
Simpan sebagai main.php, jalankan server
Buka http: // localhost: 8123 / main.php? Id = 1500
sumber
Python 2.7,
309299295274 byteProgram lengkap. Jelas lebih golf, tetapi setelah membaca komik xkcd begitu lama saya tidak bisa membiarkan ini berlalu (siapa yang tahu apakah ini akan membantu di masa depan untuk dengan mudah menelusuri xkcd).
Jika tidak ada input yang dilewati, dapatkan komik saat ini. Jika nomor komik yang valid diteruskan sebagai input maka dapatkan komik itu. Jika input yang tidak valid (bukan komik angka dalam rentang yang valid) dilewatkan, melempar kesalahan.
Ada saran tentang cara mengurangi jumlah byte. Akan mengunjungi kembali (dan menambahkan penjelasan) ketika saya memiliki lebih banyak waktu.
-10 byte berkat @Dopapp
-21 byte terima kasih kepada @Shebang
sumber
try:...
danexcept:...
ketry:n=...
danexcept:n=''
, menghemat total 10 bytetry
pernyataan? Spesifikasi program mengatakan Anda akan selalu mendapatkan bilangan bulat positif.raw_input()
? Secara default, pengguna dapat menekan[Enter]
dann
akan berisi string kosong. Jika Anda menghapus blok coba-kecuali dan apakaht=u.urlopen(h+x+n).read() -> t=u.urlopen(h+x+raw_input()).read()
Anda mendapatkannya hingga 274 byte.https
. Namun, itu masih berlaku, karena berfungsi pada saat memposting. Untuk membuatnya berfungsi sekarang, ubah baris 3 untuk memulai denganh='https://'
+1 byte.PHP, 42 byte
Simpan ke file dan jalankan di server web pilihan Anda
sumber
JavaScript + HTML, 124 + 18 = 142 byte
Solusi lintas-asal berkat jawaban Kaiido di sini .
17 byte (
//crossorigin.me/
) dapat disimpan jika proxy yang diperlukan untuk terhubung ke xkcd.com dapat dikurangi ( meta posting tentang ini ).Cuplikan Tes
sumber
Python 3 + Permintaan + PIL,
192186 byteMembuka penampil gambar (mana yang merupakan default pada sistem yang sedang dijalankannya) yang mengandung komik, dan memposting teks judul ke konsol.
sumber
Bahasa Wolfram 45 byte (Mathematica)
Penggunaan dengan nomor:
Penggunaan tanpa nomor:
sumber