original page : http://ja.doukaku.org/198/
GNU GENERAL PUBLIC LICENSE Version 3に登場する単語について、単語が登場する行を示した索引を作成してください。
与えられる文章についてはリテラルで表記する、標準入力で与えられる、引数でファイル名が与えられるなどは自由とします。
余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。
※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL
Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
#!/usr/bin/env ruby require 'open-uri' lines = open('http://www.gnu.org/licenses/gpl.txt').readlines dic = {} lines.each_with_index do |line, index| line.scan(/\w+/).each do |word| dic[word] = dic[word] ? dic[word] << index + 1 : [index + 1] end end p dic
#7072
original page : http://ja.doukaku.org/comment/7072/
コード内にURLが出るかでないかで長さがだいぶ違ってくるのでは・・・。
とりあえず普通に。
f <- 'http://www.gnu.org/licenses/gpl.txt' sapply(names(table(unlist(strsplit((l<-readLines(f)),"\\W+")))), function(s) grep(s,l))
#7085
original page : http://ja.doukaku.org/comment/7085/
ちょっと短くしました。
f <- 'http://www.gnu.org/licenses/gpl.txt' sapply(unique(unlist(strsplit((l<-readLines(f)),"\\W+"))),grep,l)