2012年3月25日日曜日

Project Euler-Problem 2をkotlinで解いてみる

問題:http://se-bikou.blogspot.jp/2012/03/project-euler-problem-2scala.html

フィボナッチ数列をもつIterableなクラスを作って、偶数な値のみにフィルタして合計を求めてみてます。

import ext.sum
import java.util.Collection
import kotlin.util.arrayList

class Fibonacci(num : #(Int, Int), val end : Int) : Iterable {
  private var num : #(Int, Int) = num

  class InnerIterator() : Iterator {
    override val hasNext : Boolean
    get() = (num._1 + num._2) <= end

    override fun next() : Int {
      num = #(num._2, num._1 + num._2)
      return num._2
    }
  }
  override fun iterator() : Iterator {
    return InnerIterator()
  }
}

fun main(args : Array) {
  val sum = Fibonacci(#(0, 1), 4000000).filter({it % 2 == 0}).sum()
  println("sum = ${sum}")
}