LL Golf Hole 1 - tinyurl.comを使ってURLを短縮する
Posted feedbacks - Java
HttpURLConnectionを用いてサンプルのRubyプログラムをできるだけ忠実にJavaに変換しました。
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import java.net.*;
import java.io.*;
import java.util.regex.*;
public class TinyURL {
public static final String SAMPLE_URL = "http://ll.jus.or.jp/2008/info/xgihyo";
private static final Pattern TINYURL_PAT = Pattern.compile("http://tinyurl\\.com/[a-z0-9-]+");
private static final String CONVURL = "http://tinyurl.com/create.php";
public static String tinyURL(String url, String alias) throws IOException {
URL tinyUrl = new URL(CONVURL);
HttpURLConnection uc = (HttpURLConnection) tinyUrl.openConnection();
String query = "url=" + URLEncoder.encode(url, "UTF-8");
if (alias != null)
query += "&alias=" + URLEncoder.encode(alias, "UTF-8");
byte[] ba = query.getBytes("us-ascii");
uc.setRequestMethod("POST");
uc.setDoOutput(true);
uc.setFixedLengthStreamingMode(ba.length);
uc.connect();
try {
OutputStream os = uc.getOutputStream();
os.write(ba);
BufferedReader r = new BufferedReader(new InputStreamReader(uc.getInputStream(), "iso-8859-1"));
String line;
while ((line = r.readLine()) != null) {
Matcher m = TINYURL_PAT.matcher(line);
if (m.find()) {
return m.group();
}
}
return null;
} finally {
uc.disconnect();
}
}
public static String tinyURL(String url) throws IOException {
return tinyURL(url, null);
}
public static void main(String[] args) throws IOException {
System.out.println(tinyURL(SAMPLE_URL));
}
}
|


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 ]