文字の種類カウント付きwc
30分プログラム、その383。
setクラスをちょうど読んだので、使ってみた。普通のwcに加えて、単語の種類も追加してみた。
あと、Scalaでコンパイルするには、objectで包まなければならないらしい。そういえばそんなことが書いてあった気がする。
使い方
$ scalac Words.scala $ scala Words hoge.html 29 94 58 633 hoge.html
ソースコード
import scala.io.Source object Words { def lines(str : String) : Seq[String] = str.split("\n") def words(str : String) : Seq[String] = str.split("[^a-zA-Z]+") def uniq_count(words : Seq[String]) : Int = { var set = Set() ++ words set.size } def main(args: Array[String]){ for(arg <- args){ val content = Source.fromFile(arg).mkString("") val c = content.size val l = lines(content).size val w = words(content) val uniq = uniq_count(w) printf(" %7d %7d %7d %7d %s\n",l,w.size,uniq,c,arg) } } }