http://i.imgur.com/からランダムな画像を見つける


11

Imgurロゴ

Imgurは無料の画像ホスティングサービスです。多くの人々がそれを使用しています。imgurリンクの例を次に示します:http : //i.imgur.com/T55muMD.png。ランダム(有効な)imgurリンクを継続的に出力するプログラムを作成します。たとえば、ここに私のプログラムのサンプル出力があります(自分で理解する必要があるいくつかのトリックが含まれているため表示されません):

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

助けになるヒント:

  • imgurが新しい場合、5文字のリンクが使用されていました。
  • imgurが新しい場合、数字は使用されませんでした。
  • これを活用して、文字のみの5文字のリンク画像のみを見つけてください。それが私のプログラムが行うことです。
  • また、すべての画像はとして保存され.pngます。

要件:

  • 継続的に出力されるランダムなimgurリンク
  • 50が繰り返しなしで出力される場合、リンクは十分に「ランダム」と見なされます
  • アクセスするとき、リンクは画像でなければなりません
  • リンクはで始まり、http://i.imgur.com/で終わる必要があります.png
  • スコアはキャラクターの量です

私はJavaで452文字でそれをしました(ゴルフではTERRIBLE)。ここには示されていませんが、それはあなた自身が理解しなければならないいくつかのトリックが含まれているからです!)


5
待って、出力に繰り返しが含まれないようにランダムに定義していますか?
リスター氏

7
警告:ポルノ画像がimgurに存在する可能性があります!=:o
Mr.Wizard

5文字の画像はすべて有効ですか?
l4m2

回答:


3

PHP 5.4、76文字

URLは、大文字のみを使用して連続した順序で生成され、仕様の文字に合わせて繰り返されることはありません。

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

4

Perl(93 + 4 = 97)

imgur独自のランダムメカニズムを使用して、ほとんどの場合png URLではない画像URL を取得ます。

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

(これにはMojoliciousが必要です。)


1
それは素晴らしいですし、公平ではありません!
エルサル

@elssarそうです、少なくともあなたの2番目のポイント。;)
メモ

ああ、それは賢いです:)
ドアノブ

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

これにより、見つかったすべての画像がを使用してJavaScriptコンソールに記録されますconsole.log()。テスト済みのすべてのブラウザー(Firefox、Chrome、IE9、SafariおよびOpera)で動作します。

楽しい部分は、あらゆる種類の面白い画像が一瞬で点滅することです:)。

それを試してみてください!(jsFiddleはこれをより完全なHTMLページにラップしますが、ブラウザーも単一の要素を受け入れます。)

ダブルタップによる驚くべきランダム文字列メソッドの小道具!

JavaScriptコンソールと記録された画像はどこで見ることができますか?

  • Firefox: Control-Shift-K(Macの場合はCommand-Option-K)を押します。そこでNet、CSS、JSボタンを選択解除し、Loggingボタンのみを選択します。
  • Opera: Control + Shift + iを押して、コンソールタブを選択します。
  • Chrome: Ctrl + Shift + iを押し、[コンソール]タブを選択します。下部で、[ログ]を選択します。
  • Safari:基本的にChromeに似ていますが、最初にSafariの開発者ツールがアクティブになっていることを確認してください。次に、Ctrl + Shift + iの代わりにCtrl + Alt + C(WindowsではMacでは不明)を押して、コンソールタブを選択します。下部で、[ログ]を選択します。
  • IE: F12を押して、コンソールタブを選択します。

これは要件を満たしていません。ポップアップされる画像の多くは無効です。
ドアノブ

「無効」とはどういう意味ですか?コンソールには、正常に表示できる画像のみが記録されます(更新された説明を参照)。
トーマスW.

ああ、大丈夫。今再試行しています。編集:Chromeは無効な画像も記録しているようです。
ドアノブ

Chromeでは、デフォルトでエラーメッセージとログが混在しています。コンソールタブの下部には、すべて、エラー、警告、ログがあります。画像を読み込めなかった場合、画像URLとともに404エラーが表示されます。[ログ]を選択すると、コードで生成された出力のみが表示されます。
トーマスW.

3
ログに記録された画像URLの多くは、「要求している画像が存在しないか、使用できなくなっています」という標準のimgurエラー画像を返すだけです。返されたドキュメント画像であるため、与えられた規則の下では、これらはまだ有効な結果であると主張できると思います。
イルマリカロネン

3

Perl(87)

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

大文字、小文字、および0から任意の文字までの数字を含む画像の検索。



3

Mathematica、108

空白が追加されました。

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

2

パイソン(174 158 156)

Pythonで短いモジュール名が必要です。また、ランダムな文字を取得する簡単な方法。:)

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

説明:

文字列の剰余演算子は、この場合には、それは置き換えられ、書式設定コマンドである「%s」の5つのランダム大文字の文字と文字列の中には、
aWebサイト名(タイプであるstr
('File'not in urllib.urlopen(a).read())「ファイル」とき真である(から「ファイルが見つかりません!」)されていない URLのHTMLで見つかりました。(type bool
bool* str= strif bool= True。したがってa、HTMLコードで「File」が見つからない場合にのみ出力されます。


仕様のどの部分に大文字と小文字の両方を使用する必要があると書かれていますか?chr(random.randint(65,90))
ピーターテイラー

私はそれを実行しましたが、何も出力しませんでした。でもいいトリック'File':)
ドアノブ

@PeterTaylor::) imgurに大文字だけのリンクがあることを知りませんでしたが、それは十分明白だと思います。ありがとう!
beary605

@Doorknob:リンクが見つからない限り改行を出力し、リンクを提供します。
beary605

1
あなたのようなものを使用してオフの数文字を剃ることができるように長さ5のいずれかのシーケンスは、あなたの5つのランダムな文字列のために働く'XXXXX'のではなくrange(5)。これには、の間に空白を必要としないという利点もありinます。
ストリゴイデス

2

ユニークなPythonアプローチ。 361 355 334 332 322 314文字-少し難読化されており、それほど難しくありません。猫の写真の密度が異常に高くなる可能性があるため、警告されています。

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)

出力:

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
すべての画像は...動物ですか?ここで起こっていくつかのトリックがあります:P +1 Iかわいい動物のような理由:3
ドアノブ

1

R、182文字

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文字

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

これは機能しますが、非常に遅く、出力を返すまでに数秒かかる場合があります。

@ beary605のソリューションに触発されました-コンテンツタイプヘッダーで画像をチェックするつもりだったので、彼はたくさんのキャラクターを救ってくれました。


random.sample:)それは、キャラクターを選ぶはるかに良い方法です。
beary605

うん、コードゴルフがあなたをグーグルに強制し、学ぶことは驚くべきことです。
エルサル

1

バッシュ(129、121)(117、109)

2つのバージョンがあります:反復型と無限再帰型(すべてのメモリを徐々に消費します)。どちらのバージョンも、実際にPNGファイルが存在するかどうかを確認します(jpg、gif、およびその他のファイルタイプは無視されます)。

反復(旧)(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

再帰的(旧)(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;:;};:

:grepには互換性の問題がある可能性があります。私のgrepマニュアルは、-sgrepの出力をサイレントにすると述べていますが、何もしません。ただし、を使用--quietする--silentか、-q代わりに機能します。

編集:

/codegolf//a/10499/7195を読んだ後にコンテンツヘッダーを使用するようになりました:)

反復(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

再帰的(109):

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

1

ルビー(103文字)

require"open-uri";loop{u="http://i.imgur.com/#{rand(1e9).to_s(36)[0,5]}.png";open u rescue next;puts u}

.pngURLの最後にaを追加する必要があります。
ドアノブ

@Doorknob:おっと、修正
匿名の

0

Bash /コマンドラインツール、72文字

@memoweの巧妙なテクニックを借りる:

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

これにより、同じプロセス空間内で自身を再実行することにより、連続ループが実現します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.