2011年6月9日木曜日

オイラープロジェクトを解く~Project Euler Problem2

クリアーo(´д`)o
You are the 確認し損ねた…th person to have solved this problem.

【前提】
Scalaで解く!

【問題】
http://projecteuler.net/index.php?section=problems&id=2

【解法】

object euler2 {
  def main(args : Array[String]) : Unit =
  {
   println(fibonacci(4000000).map(x=>if(gusu(x)) x else 0).sum)
  }
  def fibonacci(max:Int) :List[Int]= {
   addNext(List(1,2),max)
  }
  /**
   * リストにリストの最後から2番目と最後の数値を足した値を返す。
   */
  def addNext(lst : List[Int],max :Int) :List[Int] =
    if((lst.init.last + lst.last) < max) {addNext(lst :+ (lst.init.last + lst.last),max)} else {lst}
 
  def gusu(i:Int)=i/2==i.toDouble/2
 
}

0 件のコメント:

コメントを投稿