Project Euler: Problem38
残念ながら死ぬほど汚いんだけど…。
object Problem38 { def isPandigital(x:String):Boolean = { for (c <- x) if (c=='0') return false var a=0 var b=0 while (a<8) { b = a+1 while (b<9) { if (x(a)==x(b)) return false b += 1 } a += 1 } return true } def make(x:Int):Option[Int] = { var c = 1 var result = "" while (result.length < 9) { result += (x*c).toString() c += 1 } println(result) if (result.length == 9 && isPandigital(result)) return Some(Integer.parseInt(result)) else return None } def search() : Int = { var max = 0 var counter : Int = 10 while ( counter%10000 != 0 ) { make(counter) match { case Some(x) => if (x > max) max = x case None => () } counter += 1 } return max } def main(args:Array[String]) : unit = { println(search()) } }