クリアーo(´д`)o
You are the 87527th person to have solved this problem.
ミスりまくった。問題良く読もう・・・
にしても、なれればループより書くの早いね!
【前提】
Scalaで解く!
【問題】
素因数分解の問題
【解法】
本当は、x*(100 to 999)をフィルターした結果のmaxをリストにして再度maxにしたかったけど、
空っぽのListにはmaxなどのメソッドは使えないらしく、エラーになる。
まあ、ループしてるわけではないのであまり処理速度は変わらない気がするけど・・・
本当は、x*(100 to 999)をフィルターした結果のmaxをリストにして再度maxにしたかったけど、
空っぽのListにはmaxなどのメソッドは使えないらしく、エラーになる。
まあ、ループしてるわけではないのであまり処理速度は変わらない気がするけど・・・
object euler4 {
//全部展開するのは無駄すぎるので没にしたソース
// def main(args:Array[String]) :Unit =
// println((100 to 999).toList.map(x=>(100 to 999).toList.map(y=>x*y)).flatten.filter(x=>checkKaisu(x)).max)
// def chekDigit(lst:List[Char]) :List[Char] =
// if(lst.length > 1 && lst.head==lst.last) chekDigit(lst.init.tail) else lst
// def checkKaisu(num:Long) :Boolean =
// if(chekDigit(num.toString.toCharArray.toList).length < 2) true else false
def main(args:Array[String]) :Unit =
println((100 to 999).toList.map(x=>(100 to 999).toList.map(y=>x*y).filter(z=>checkKaisu(z))).flatten.max )
def chekDigit(lst:List[Char]) :List[Char] =
if(lst.length > 1 && lst.head==lst.last) chekDigit(lst.init.tail) else lst
def checkKaisu(num:Long) :Boolean=
if(chekDigit(num.toString.toCharArray.toList).length < 2) true else false
}
0 件のコメント:
コメントを投稿