ScalaでProject Euler(39)

Problem 22

Scalaでテキストファイルから1行読むのはこんな感じだそうです。

val s = io.Source.fromFile("names.txt")
val str = s.getLines.next

文字列のソートにはcompareToを使うそうです。

def remove(s :String) = s.substring(1, s.size - 1)

val s = io.Source.fromFile("names.txt")
val str = s.getLines.next
val a = str.split(',').map(remove).toList.sort((s1, s2) => (s1 compareTo s2) < 0)
val b = a.map(s => s.map(c => c - 'A' + 1).sum)
println (b.toIterator.zip(Iterator.from(1)).map(x => x._1 * x._2).sum)