サイログ。

~雑多な記事置き場~

第24回Ruby/Rails勉強会@関西 初級者レッスン課題こたえ

先週の土曜日に行われたRuby/Rails勉強会@関西で出てきた課題をこたえます。
最後の数問は、「どれを参考にしたら・・・」状態だったのでやめました(^^;

というわけで、途中までのこたえ。

# 英文解析

list = ARGF.readlines

# 文字数カウント

puts list.map{|l| l.chomp.strip }.join('').split(//).length

# 単語数カウント

puts list.inject(0){|r, l| r = r + l.chomp.strip.split(/[\s\t]+/).length }

# 行数

puts list.length


# 文字列出現頻度

list.map{|l| l.chomp.strip }.join('').split(//).inject(Hash.new(0)){|r,c| r[c] += 1; next r }.sort.each{|k,v| puts sprintf("[#{k}] : %5d", v)}
 
# 単語出現頻度

list.map{|l| l.chomp.strip.split(/[\s\t]+/) }.flatten.inject(Hash.new(0)){|r,c| r[c] += 1; next r }.sort.each{|k,v| puts sprintf("[#{k}] : %5d", v)}

# Apacheアクセスログ解析

list = ARGF.readlines

# index.phpへのアクセス回数

puts list.select{|l| /\"GET \/index\.php/.match(l) }.length

# 最初のMacユーザのアクセス時

puts list.find{|l| /Macintosh;/.match(l) }.split(/\s/)[3].sub(/^\[/, '')

某さん、あとは頼む(笑)