S-99 その2
S-99: Ninety-Nine Scala Problemsの続きです
やはりP26が山場で,その後はさくさく進められています.
少しflatMapを勘違いしていた所などがありP26では非常に時間を割いてしまいました.
flatMapの定義は以下のようになっています
def flatMap [B] (f: (A) ⇒ GenTraversableOnce[B]): List[B]
scala> r res4: Seq[List[Int]] = List(List(1, 2), List(3), List(4, 5)) scala> r.flatMap(n => IndexedSeq(9 :: n)) res5: Seq[List[Int]] = List(List(9, 1, 2), List(9, 3), List(9, 4, 5))
ポイントとしてはfはListを一つ増やすような関数となっている事
そしてその増えたリストに対してのみflatMapを行なった際に展開されるといった形になります.
はてさてS-99のP26~P41までのコードは以下のようになります.