class CHummingNumbers {
def next(c:Int):Int = (BigInt(30).pow(c) % c).intValue match {
case 0 => c
case _ => next(c+1)
}
def take(n:Int,c:Int):List[Int] = n match {
case 0 => List()
case _ => next(c) match { case v => v::take(n-1,v+1) }
}
def take(n:Int):List[Int] = take(n,1)
}
object HummingNumbers {
def main(args:Array[String]):Unit = {
try {
val n:Int = args.length match {
case 1 => args(0).toInt
case _ => 100
}
println((new CHummingNumbers).take(n).mkString("\n"))
} catch {
case e => e.printStackTrace
}
}
}
lunlumo #7658() [ Scala ] Rating0/0=0.00
[1..100]>>=penさんの投稿を参考に書いてみました。
class CHummingNumbers { def next(c:Int):Int = (BigInt(30).pow(c) % c).intValue match { case 0 => c case _ => next(c+1) } def take(n:Int,c:Int):List[Int] = n match { case 0 => List() case _ => next(c) match { case v => v::take(n-1,v+1) } } def take(n:Int):List[Int] = take(n,1) } object HummingNumbers { def main(args:Array[String]):Unit = { try { val n:Int = args.length match { case 1 => args(0).toInt case _ => 100 } println((new CHummingNumbers).take(n).mkString("\n")) } catch { case e => e.printStackTrace } } }Rating0/0=0.00-0+
[ reply ]