Temukan gambar acak dari http://i.imgur.com/

11

Logo imgur

Imgur adalah layanan hosting gambar gratis. Banyak orang menggunakannya. Berikut adalah contoh tautan imgur: http://i.imgur.com/T55muMD.png . Tulis program yang terus-menerus menampilkan tautan imgur acak (valid). Sebagai contoh, berikut adalah beberapa contoh keluaran dari progam saya (tidak ditampilkan karena berisi beberapa trik yang harus Anda cari sendiri):

http://i.imgur.com/uFmsA.png
http://i.imgur.com/FlpHS.png
http://i.imgur.com/eAbsZ.png
http://i.imgur.com/lEUsq.png
http://i.imgur.com/RuveH.png
http://i.imgur.com/BoEwB.png
http://i.imgur.com/HVFGQ.png
http://i.imgur.com/PZpMg.png
http://i.imgur.com/DezCY.png

Petunjuk bermanfaat:

  • Ketika imgur masih baru, tautan 5 huruf digunakan.
  • Ketika imgur masih baru, angka tidak digunakan.
  • Anda dapat menggunakan ini untuk keuntungan Anda: hanya temukan gambar tautan 5 huruf dengan hanya huruf. Itulah yang dilakukan oleh program saya.
  • Juga, semua gambar disimpan sebagai .png.

Persyaratan:

  • Terus menampilkan tautan imgur acak
  • Tautan dianggap cukup "acak" jika 50 dihasilkan tanpa pengulangan
  • Saat dikunjungi, tautan harus berupa gambar
  • Tautan harus dimulai dengan http://i.imgur.com/dan diakhiri dengan.png
  • Skor adalah jumlah karakter

Saya melakukannya di Jawa (TERRIBLE untuk bermain golf) dalam 452 karakter. Tidak ditampilkan di sini karena mengandung beberapa trik yang harus Anda cari sendiri!)

Gagang pintu
sumber
5
Tunggu, apakah definisi Anda acak bahwa output tidak boleh mengandung pengulangan?
Tuan Lister
7
Peringatan: gambar-gambar porno mungkin ada di imgur! =: o
Mr.Wizard
Apakah semua gambar 5 huruf valid?
l4m2

Jawaban:

3

PHP 5.4, 76 karakter

URL dihasilkan secara berurutan hanya menggunakan huruf besar dan tidak pernah mengulangi, memenuhi surat spesifikasi.

<?for($t=@ZZZZ;$t++;)file($u="http://i.imgur.com/$t.png")[0]>@F&&print"$u
";
PleaseStand
sumber
4

Perl (93 + 4 = 97)

Menggunakan mekanisme acak imgur sendiri untuk mendapatkan URL gambar mereka , yang sebagian besar bukan URL png:

$ perl -Mojo -E 'say+g("http://imgur.com/gallery/random")->dom->at("[rel=image_src]")->attrs("href")for+1..50'
http://i.imgur.com/7cNoA.jpg
...

(Anda perlu Mojolicious untuk ini.)

memowe
sumber
1
Itu brilian, dan sangat tidak adil!
elssar
@elssar Benar, setidaknya poin kedua Anda. ;)
memowe
Oh, itu pintar :)
Gagang pintu
4

HTML (152)

<img src=x
onload=console.log(s);g()
onerror=g=function(){s='http://i.imgur.com/'+Math.random().toString(36).substr(2,6)+'.png';event.target.src=s};g()>

Log ini semua gambar yang ditemukan di konsol JavaScript menggunakan console.log(). Bekerja di semua browser yang diuji (Firefox, Chrome, IE9, Safari dan Opera).

Bagian yang menyenangkan adalah bahwa semua jenis gambar lucu berkedip untuk kedipan mata :).

Cobalah! (jsFiddle membungkus ini menjadi halaman HTML yang lebih lengkap, tetapi browser juga menerima elemen tunggal.)

Alat peraga untuk metode string acak yang menakjubkan oleh doubletap !

Di mana saya dapat melihat konsol JavaScript dan gambar yang dicatat?

  • Firefox: Tekan Control-Shift-K (Command-Option-K di Mac). Batalkan pilihan tombol Net, CSS dan JS di sana, hanya pilih tombol Logging.
  • Opera: Tekan Control + Shift + i, pilih tab Console.
  • Chrome: Tekan Control + Shift + i, pilih tab Console. Di bagian bawah, pilih Log.
  • Safari: Pada dasarnya menyukai Chrome, tetapi pastikan terlebih dahulu bahwa alat pengembang Safari diaktifkan . Lalu tekan Control + Alt + C (di Windows, tidak yakin pada Mac) alih-alih Control + Shift + i, pilih tab Console. Di bagian bawah, pilih Log.
  • IE: Tekan F12, pilih tab konsol.
Thomas W.
sumber
Ini tidak memenuhi persyaratan. Banyak gambar yang muncul tidak valid.
Gagang Pintu
Apa yang Anda maksud dengan "tidak valid"? Di konsol, hanya gambar yang dapat ditampilkan dengan sukses dicatat (lihat deskripsi saya yang diperbarui).
Thomas W.
Oh baiklah. Coba lagi sekarang. Sunting: Chrome juga sepertinya sedang mencatat gambar yang tidak valid.
Gagang Pintu
Chrome secara default mencampur pesan kesalahan dan log. Di bagian bawah tab konsol Anda memiliki Semua, Kesalahan, Peringatan, Log. Jika suatu gambar tidak dapat dimuat, itu akan menampilkan kesalahan 404 dengan URL gambar. Jika Anda memilih Log, maka hanya output yang dihasilkan oleh kode saya yang akan ditampilkan.
Thomas W.
3
Banyak URL gambar yang dicatat hanya mengembalikan gambar kesalahan standar imgur yang mengatakan "Gambar yang Anda minta tidak ada atau tidak lagi tersedia." Saya kira orang bisa berpendapat bahwa itu masih hasil yang valid di bawah aturan yang diberikan, karena dokumen yang dikembalikan adalah gambar.
Ilmari Karonen
3

Perl (87)

perl -pe's/\W//g;$_="http://i.imgur.com/$_.png\n";$_=""if`curl $_`=~/^</'</dev/urandom

Menemukan gambar dengan huruf besar, huruf kecil dan angka dari 0 hingga karakter apa pun, suatu hari.

Daniel
sumber
Hehehe, urandom
beary605
3

Mathematica , 108

Ruang putih ditambahkan.

While[True,
 Import@# /. _Image :> Print@# &[
  "http://i.imgur.com/" <> "a" ~CharacterRange~ "z" ~RandomChoice~ 5 <> ".png"
 ]
]
Tuan Wisaya
sumber
2

Python ( 174 158 156)

Saya ingin nama modul lebih pendek dengan Python. Juga metode yang lebih mudah untuk mendapatkan huruf acak. :)

import urllib,random
while 1:a='http://i.imgur.com/%s.png'%''.join(chr(random.randint(65,90))for i in'AAAAA');print('File'not in urllib.urlopen(a).read())*a

Penjelasan:

Operator modulus pada string adalah perintah pemformatan, dalam hal ini menggantikan '% s' dalam string dengan 5 huruf besar acak
aadalah nama situs web (tipe str)
('File'not in urllib.urlopen(a).read())Benar ketika 'File' (dari 'File tidak ditemukan!') adalah tidak ditemukan dalam HTML URL. (type bool)
bool* str= strif bool= True, jadi hanya akan ditampilkan ajika 'File' tidak ditemukan dalam kode HTML.

beary605
sumber
Bagian mana dari spek yang mengatakan Anda harus menggunakan huruf besar dan kecil? chr(random.randint(65,90))
Peter Taylor
Saya menjalankannya dan tidak menghasilkan apa-apa. Trik yang bagus dengan 'File':) :)
Doorknob
@PeterTaylor: :) Saya tidak tahu bahwa ada tautan di imgur hanya dengan huruf besar, tapi saya kira itu sudah cukup jelas. Terima kasih!
beary605
@ Doorknob: Ini menampilkan baris baru kecuali jika tautan ditemukan, kemudian akan memberikan tautan.
beary605
1
Urutan sepanjang 5 akan bekerja untuk 5 karakter acak Anda, sehingga Anda dapat mencukur beberapa karakter dengan menggunakan sesuatu seperti 'XXXXX'daripada range(5). Ini juga memiliki keuntungan karena tidak memerlukan spasi putih antara itu dan in.
Strigoides
2

Pendekatan Python unik. 361 355 334 332 322 314 karakter - agak dikaburkan, tidak ada yang terlalu sulit. Mungkin menghasilkan kepadatan gambar kucing yang luar biasa tinggi, Anda telah diperingatkan.

import json as j,urllib as o,time as t;a=0
while 1:
 q="i.imgur";y,p=('data','children');r="njj";h="erqqvg.pbz/";u="uggc://"+h+"e/"+r;c=j.loads(o.urlopen(u.decode('rot13')+".json?sorted=new&after=%s"%a).read())[y]
 for s in c[p]:
  f=s[y];w=f['url'].strip('?1')
  if w.find(q)!=-1:print w
 a=c['after'];t.sleep(3)

Keluaran:

http://i.imgur.com/u3vyMCW.jpg
http://i.imgur.com/zF7rPAf.jpg
http://i.imgur.com/aDTl7OM.jpg
http://i.imgur.com/KONVsYw.jpg
http://i.imgur.com/RVM2pYi.png
http://i.imgur.com/tkMhc9T.jpg
http://i.imgur.com/KxUrZkp.gif
http://i.imgur.com/mnDTovy.jpg
http://i.imgur.com/WpuXbHb.jpg
http://i.imgur.com/qZA3mCR.jpg
http://i.imgur.com/AxMS1Fs.png
http://i.imgur.com/TLSd571.jpg
http://i.imgur.com/VfMhLIQ.jpg
http://i.imgur.com/Wu32582.jpg
http://i.imgur.com/hrmQL2F.jpg
http://i.imgur.com/Clg8N.jpg
http://i.imgur.com/7Wsko.jpg
http://i.imgur.com/Rhb0UNx.jpg
http://i.imgur.com/LAXAf45.gif
http://i.imgur.com/jhOLJ9B.jpg
http://i.imgur.com/FQ9NeAl.jpg
http://i.imgur.com/oqzf6tE.jpg
http://i.imgur.com/rnpXs1A.jpg
http://i.imgur.com/DfUIz6k.jpg
http://i.imgur.com/orfGA5I.jpg
http://i.imgur.com/wBT7JNt.jpg
http://i.imgur.com/RycK1m2.jpg
http://i.imgur.com/7j21FIR.jpg
http://i.imgur.com/z2tVnNC.jpg
http://i.imgur.com/mnsAGuF.jpg
http://i.imgur.com/vIZM1NY.jpg
http://i.imgur.com/JT3XRI4.jpg
http://i.imgur.com/SNpwTmp.jpg
http://i.imgur.com/u9ynLb9.jpg
http://i.imgur.com/DrFWsBP.jpg
http://i.imgur.com/rU6oyup.jpg
http://i.imgur.com/XxBD5nl.jpg
http://i.imgur.com/d09qQzP.jpg
http://i.imgur.com/vvPSbqI.jpg
http://i.imgur.com/1hdfobQ.jpg
http://i.imgur.com/4LLC6Vs.jpg
http://i.imgur.com/RfasxO2.jpg
http://i.imgur.com/BBcpOos.jpg
http://i.imgur.com/zMH8mgG.jpg
http://i.imgur.com/7g8k2Ww.jpg
Thomas O
sumber
3
Semua gambar ... adalah binatang? Ada beberapa tipu daya yang terjadi di sini: P +1 karena saya suka binatang lucu: 3
Gagang Pintu
1

R, 182 karakter

library(httr);while(0<1){s=paste("http://i.imgur.com/",paste(sample(c(LETTERS,letters),5),collapse=""),".png",sep="");if(HEAD(s)$headers$'content-type'=='text/html')'' else print(s)}
Paolo
sumber
1

Python, 153 karakter

import string as s,random as w,requests as r
while 1:
 t='http://i.imgur.com/%s.png'%''.join(w.sample(s.letters,5))
 if'not'not in r.get(t).text:print t

Meskipun ini berfungsi, sangat lambat dan mungkin membutuhkan waktu beberapa detik sebelum mengembalikan output apa pun.

Terinspirasi oleh solusi @ beary605 - dia menyelamatkan saya banyak karakter karena saya berencana untuk memeriksa gambar dengan header tipe konten.

elssar
sumber
random.sample:) Itu adalah cara yang jauh lebih baik untuk memilih karakter.
beary605
Yap, luar biasa golf Code apa yang akan memaksa Anda ke Google, dan belajar.
elssar
1

Bash (129, 121) (117, 109)

Saya punya dua versi: versi berulang dan berulang tanpa akhir (yang perlahan akan memakan semua memori). Kedua versi memeriksa apakah sebenarnya ada file PNG (jpg, gif dan jenis file lainnya diabaikan).

Iteratif (lama) (129):

while true;do u=http://i.imgur.com/$(tr -dc a-zA-Z</dev/urandom|head -c5).png;curl $u -s 2>&1|head -c4|grep PNG$ -q&&echo $u;done

Rekursif (lama) (121):

:(){ u=http://i.imgur.com/$(tr -dc a-zA-Z</dev/urandom|head -c5).png;curl $u -s 2>&1|head -c4|grep PNG$ -q&&echo $u;:;};:

Catatan : Mungkin ada masalah kompatibilitas dengan grep. Manual grep saya menyatakan bahwa -smembisukan output grep tetapi tidak melakukan apa-apa. Namun, menggunakan --quiet, --silentatau -qmalah berfungsi.

EDIT:

Menggunakan tajuk konten sekarang setelah membaca /codegolf//a/10499/7195 :)

Iteratif (117):

while true;do u=http://i.imgur.com/$(tr -dc a-zA-Z</dev/urandom|head -c5).png;curl $u -sI|grep image -q&&echo $u;done

Rekursif (109):

:(){ u=http://i.imgur.com/$(tr -dc a-zA-Z</dev/urandom|head -c5).png;curl $u -sI|grep image -q&&echo $u;:;};:
pengguna701072
sumber
1

Ruby (103 karakter)

require"open-uri";loop{u="http://i.imgur.com/#{rand(1e9).to_s(36)[0,5]}.png";open u rescue next;puts u}
pengecut anonim
sumber
Anda harus menambahkan a .pngke akhir URL.
Gagang Pintu
@Doorknob: Ups, diperbaiki
pengecut anonim
0

Alat Bash / command-line, 72 karakter

Meminjam @ teknik pintar memowe :

curl -sL http://imgur.com/gallery/random|grep e_sr|cut -d\" -f4;exec $0

Ini mencapai loop kontinu dengan mengeksekusi kembali dirinya dalam ruang proses yang sama.

Trauma Digital
sumber