Project Eulerの22問目

 
特に工夫しなかった…




// @cocomoff
// 2013-02-20

object Main {
def main(args: Array[String]) {
import scala.io.Source
val strL = Source.fromFile(“names.txt”).getLines.toList.mkString

// 名前切り出し
val list = strL.split(“,”).map( v => v.slice(1, v.length-1) ).toList

// 文字列でソート
val slist = list.sort((e1, e2) => (e1 compareTo e2) < 0)

// 文字列を名前に変換する関数
def str2value(str: String): Int = str.map( v => v.toChar.toInt – ‘A’ + 1).sum

// コスト
val scorelist = for ((str, i) <- slist.zipWithIndex) yield { (i+1) * str2value(str) }
println(scorelist.sum)
}
[/scala]それよりも大きい数を扱うような問題を全部ScalaのBigIntに逃げてるのがもう少し工夫した方がいい気がしてきた.

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です