Http://i.imgur.com/ adresinden rastgele resimler bulun


11

İmgur logosu

Imgur ücretsiz bir resim barındırma hizmetidir. Birçok kişi bunu kullanıyor. İşte bir imgur bağlantısı örneği: http://i.imgur.com/T55muMD.png . Sürekli (geçerli) imgur bağlantıları çıkaran bir program yazın. Örneğin, programımın bazı örnek çıktısı (kendiniz anlamanız gereken bazı püf noktaları içerdiği için gösterilmemiştir):

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

Yardımcı ipuçları:

  • İmgur yeniyken 5 harfli bağlantılar kullanıldı.
  • İmgur yeniyken sayılar kullanılmadı.
  • Bunu kendi yararınıza kullanabilirsiniz: yalnızca harf içeren 5 harfli bağlantı resimlerini bulun. Programım bunu yapıyor.
  • Ayrıca, tüm görüntüler olarak kaydedilir .png.

Gereksinimler:

  • Rasgele imgur bağlantılarını sürekli olarak çıktılar
  • 50 tekrar yoksa çıktılar yeterince "rastgele" kabul edilir
  • Ziyaret edildiğinde, bağlantılar bir resim olmalıdır
  • Bağlantılar ile başlamalı http://i.imgur.com/ve ile bitmelidir.png
  • Puan, karakter sayısıdır

452 karakter Java (golf için KORKUNÇ) yaptı. Burada gösterilmiyor çünkü kendiniz için anlamanız gereken bazı hileler içeriyor!)


5
Bekle, çıktının tekrar içermemesi gereken rastgele tanımınız mı?
Bay Lister

7
Uyarı: imgur'da pornografik görüntüler bulunabilir! =: o
Mr.Wizard

Tüm 5 harfli resimler geçerli mi?
l4m2

Yanıtlar:


3

PHP 5.4, 76 karakter

URL'ler, yalnızca büyük harfler kullanılarak sıralı bir şekilde oluşturulur ve şartnamenin harfini karşılayarak asla tekrarlanmaz.

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

4

Perl (93 + 4 = 97)

Görüntü URL'lerini almak için imgur'un kendi rastgele mekanizmasını kullanarak , çoğu zaman png URL'si değildir:

$ 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
...

(Bunun için Mojolicious'a ihtiyacınız var .)


1
Bu harika ve bu yüzden adil değil!
elssar

@elssar Doğru, en azından ikinci noktanız. ;)
memowe

Oh, bu çok zeki :)
Kapı Tokmağı

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()>

Bu, JavaScript konsolunda bulunan tüm resimleri kullanarak günlüğe kaydeder console.log(). Test edilen tüm tarayıcılarda (Firefox, Chrome, IE9, Safari ve Opera) çalışır.

Eğlenceli kısmı, komik görüntülerin her türlü göz açıp kapayıncaya kadar yanıp sönmesidir.

Dene! (jsFiddle bunu daha eksiksiz bir HTML sayfasına sarar, ancak tarayıcılar da tek öğeyi kabul eder.)

İçin sahne şaşırtıcı rasgele dize yöntemiyle tarafından doubletap !

JavaScript konsolunu ve günlüğe kaydedilen resimleri nerede görebilirim?

  • Firefox: Control-Shift-K (Mac'te Command-Option-K) tuşlarına basın. Oradaki Net, CSS ve JS düğmelerinin seçimini kaldırın, yalnızca Günlük Kaydı düğmesini seçin.
  • Opera: Control + Shift + i tuşlarına basın, Konsol sekmesini seçin.
  • Chrome: Control + Shift + i tuşlarına basın, Konsol sekmesini seçin. Altta, Günlükler'i seçin.
  • Safari: Temel olarak Chrome gibi, ancak önce Safari'nin geliştirici araçlarının etkinleştirildiğinden emin olun . Ardından Control + Shift + i yerine Control + Alt + C (Windows'ta Mac'te emin değilim) tuşlarına basın, Konsol sekmesini seçin. Altta, Günlükler'i seçin.
  • IE: F12 tuşuna basın, konsol sekmesini seçin.

Bu gereksinimleri karşılamıyor. Açtığı görüntülerin çoğu geçerli değil.
Kapı tokmağı

"Geçerli değil" ile ne demek istiyorsun? Konsolda, yalnızca başarıyla görüntülenebilecek görüntüler günlüğe kaydedilir (güncellenmiş açıklamama bakın).
Thomas W.

Tamam. Şimdi tekrar deniyorum. Düzenleme: Chrome, geçersiz resimleri de günlüğe kaydediyor gibi görünüyor.
Kapı tokmağı

Chrome varsayılan olarak hata mesajlarını ve günlükleri karıştırır. Konsol sekmesinin altında Tümü, Hatalar, Uyarılar, Günlükler bulunur. Bir resim yüklenemediyse, resim URL'sinde bir 404 hatası görüntüler. Günlükler'i seçerseniz, yalnızca kodum tarafından üretilen çıktı görüntülenmelidir.
Thomas W.Jan

3
Günlüğe kaydedilen resim URL'lerinin çoğu , "İstediğiniz resim mevcut değil veya artık mevcut değil" yazan standart imgur hata resmini döndürüyor . Bir iade belge beri bu verilen kurallar çerçevesinde geçerli sonuçlar hala iddia olabilir varsayalım olan bir görüntü.
Ilmari Karonen

3

Perl (87)

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

Bir gün 0'dan herhangi bir karaktere kadar büyük, küçük harf ve rakam içeren görüntüler bulma.


Hehehe, urandom
beary605 20:13

3

Mathematica , 108

Beyaz boşluk eklendi.

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

2

Piton ( 174 158 156)

Python'da daha kısa modül adları istiyorum. Ayrıca rastgele harfler almak için daha kolay bir yöntem. :)

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

Açıklama:

Bir ipe modülü operatör bu durumda değiştirir, biçimlendirme komutu '% s' 5 rastgele büyük harf olan dizesinde
aweb sitesi adı (tipidir str)
('File'not in urllib.urlopen(a).read())'Dosya' ne zaman True (dan 'Dosya bulunamadı!') olduğu değil URL'nin HTML buldular. (type bool)
bool* str= strif bool= True, bu nedenle yalnızca aHTML kodunda 'Dosya' bulunmazsa çıktı alır.


Spesifikasyonun hangi kısmı hem büyük hem de küçük harfleri kullanmanız gerektiğini söylüyor? chr(random.randint(65,90))
Peter Taylor

Ben koştum ve hiçbir şey çıktı vermedi. Güzel hile ile 'File'olsa :)
Kapı Tokmağı

@PeterTaylor: :) Imgur'da sadece büyük harflerle herhangi bir bağlantı olduğunu bilmiyordum, ama sanırım bu yeterince açık olurdu. Teşekkürler!
beary605

@Doorknob: Bir bağlantı bulunmadıkça yeni bir satır çıkarır, sonra bir bağlantı verir.
beary605

1
5 uzunluktaki herhangi bir sıra, 5 rastgele karakteriniz için işe yarayacaktır, böylece 'XXXXX'bunun yerine bir şey kullanarak birkaç karakteri tıraş edebilirsiniz range(5). Bu aynı zamanda onunla arasında boşluk gerektirmeme avantajına da sahiptir in.
Ocak'ta Strigoides

2

Eşsiz Python yaklaşımı. 361 355 334 332 322 314 karakter - biraz şaşkın, çok zor bir şey değil. Alışılmadık derecede yüksek kedi resimleri ile sonuçlanabilir, uyarıldınız.

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)

Çıktı:

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

3
Tüm görüntüler ... hayvanlar mý? Burada bir miktar hile var: P +1 çünkü sevimli hayvanları seviyorum: 3
Kapı tokmağı

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)}

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

Bu çalışırken, kanlı yavaştır ve herhangi bir çıktıyı döndürmeden önce birkaç saniye sürebilir.

@ Beary605'in çözümünden esinlenerek, içerik türü üstbilgiye göre resmi kontrol etmeyi planladığım için bana bir sürü karakter kaydetti.


random.sample:) Bu karakter seçmenin çok daha iyi bir yoludur.
beary605

Evet, Code golf'ün sizi Google'a zorlaması ve öğrenmesi şaşırtıcı.
elssar

1

Bash (129, 121) (117, 109)

İki versiyonum var: yinelemeli ve sonsuz bir özyinelemeli (yavaş yavaş tüm hafızayı yiyecektir). Her iki sürüm de aslında bir PNG dosyası olup olmadığını kontrol eder (jpg, gif ve diğer dosya türleri yok sayılır).

Yinelemeli (eski) (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

Özyinelemeli (eski) (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;:;};:

Not : grep ile bir uyumluluk sorunu olabilir. Benim grep el -skitabım sessizlik grep'in çıktısını söylüyor ama hiçbir şey yapmıyor. Ancak kullanarak --quiet, --silentya da -qişleri yerine.

DÜZENLE:

Https://codegolf.stackexchange.com/a/10499/7195 okuduktan sonra içerik başlıklarını şimdi kullanma :)

Yinelemeli (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

Özyinelemeli (109):

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


0

Bash / komut satırı araçları, 72 karakter

Borçlanma @ memowe'nun zeki tekniği :

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

Bu, kendisini aynı işlem alanı içinde yeniden yürüterek sürekli bir döngü elde eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.