LL Golf Hole 1 - tinyurl.comを使ってURLを短縮する
Posted feedbacks - Ruby
tinyurl.com( http://tinyurl.com/ )のサービスを利用し、 http://ll.jus.or.jp/2008/info/xgihyo というURLを短縮しなさい。tinyurl.comのalias機能は使わないものとする。 なお、参考までに短縮したURLは http://tinyurl.com/5mngx8 となる。
余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてみよ。
※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
see: tinyurl.comでURLを短縮するRubyスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/env ruby
require 'rubygems'
require 'mechanize'
def tinyurl(url, _alias = nil)
m = WWW::Mechanize.new
res = m.get('http://tinyurl.com/')
form = res.forms[1]
form['url'] = url
form['alias'] = _alias if _alias
res = m.submit(form)
regexp = Regexp.new('.*(http\:\//tinyurl.com/[a-z0-9-]+).*')
match = regexp.match(res.body)
return match[1] if match
end
if __FILE__ == $0 then
puts tinyurl('http://ll.jus.or.jp/2008/info/xgihyo')
end
|
TinyURL APIとな!?
see: open-uri - Rubyリファレンスマニュアル
1 | ruby -ropen-uri -e "puts open('http://tinyurl.com/api-create.php?url=http://ll.jus.or.jp/2008/info/xgihyo').read"
|
readしなくても*で展開する方法もあります
1 | ruby -ropen-uri -e'puts *open("http://url.ms/qJI")'
|
1バイトだけ短く。
1 | ruby -rnet/http -e "puts Net::HTTP.get('tinyurl.com','api-create.php?url=http://ll.jus.or.jp/2008/info/xgihyo')"
|
実行はしないでください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #!/usr/bin/env ruby
require 'rubygems'
require 'mechanize'
$a = ('0'..'9').to_a + ('a'..'z').to_a
def num2str(n)
s = ""
while (n > 0)
n,r = n.divmod 36
s << $a[r]
end
return s.empty? ? "0": s
end
m = WWW::Mechanize.new
s = ""
#n = 539933837
n = 0
loop {
begin
s = "http://tinyurl.com/" + num2str(n)
res = m.get(s)
break if (res.uri.to_s == "http://ll.jus.or.jp/2008/info/xgihyo")
rescue
end
n += 1
}
puts s
|
こそこそ・・・
1 2 3 | #! /usr/bin/env ruby
require 'open-uri'
puts *open('http://tinyurl.com/api-create.php?url=http://ll.jus.or.jp/2008/info/xgihyo')
|
この仕組みは面白いですね :-)
Rubyでも書いてみました。
see: #6891
1 | ruby -ropen-uri -e'eval open("http://ja.doukaku.org/comment/6891/download").read'
|
1 | ruby -ropen-uri -e'eval open("http://tinyurl.com/5kzlfb").read'
|
一応gorubyの例として
1 | goruby -ropen-uri -e'pr *op("http://tinyurl.com/api-create.php?url=http://ll.jus.or.jp/2008/info/xgihyo")'
|
普通に書いてみた
1 | require'open-uri';puts open('http://tinyurl.com/create.php?url=http://ll.jus.or.jp/2008/info/xgihyo',&:read)[%r|http://tinyurl.com/\w+|]
|





takano32
#6771()
[
Ruby
]
Rating-5/15=-0.33
tinyurl.com( http://tinyurl.com/ )のサービスを利用し、 http://ll.jus.or.jp/2008/info/xgihyo というURLを短縮しなさい。tinyurl.comのalias機能は使わないものとする。 なお、参考までに短縮したURLは http://tinyurl.com/5mngx8 となる。
余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてみよ。
※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
see: tinyurl.comでURLを短縮するRubyスクリプト
Rating-5/15=-0.33-0+
[ reply ]