diff --git a/src/main/scala/ninetyNineScalaProblems/Problem07.scala b/src/main/scala/ninetyNineScalaProblems/Problem07.scala new file mode 100644 index 0000000..17454eb --- /dev/null +++ b/src/main/scala/ninetyNineScalaProblems/Problem07.scala @@ -0,0 +1,12 @@ +package ninetyNineScalaProblems + +import scala.annotation.tailrec + +object Problem07: + def flattenNestedList(list: List[Any]): List[Any] = + def loop(l: List[Any]): List[Any] = + l.flatMap: + case ls: List[Any] => loop(ls) + case e => List(e) + + loop(list) \ No newline at end of file diff --git a/src/test/scala/ninetyNineScalaProblems/Problem07Suite.scala b/src/test/scala/ninetyNineScalaProblems/Problem07Suite.scala new file mode 100644 index 0000000..742e643 --- /dev/null +++ b/src/test/scala/ninetyNineScalaProblems/Problem07Suite.scala @@ -0,0 +1,14 @@ +package ninetyNineScalaProblems + +class Problem07Suite extends munit.FunSuite: + List( + (List(1, List(2, 3), List(List(4))), List(1, 2, 3, 4)), + (List(List()), List()), + (List(1, List(2, 3)), List(1, 2, 3)), + (List(0, 0, 0), List(0, 0, 0)), + (List(1), List(1)), + (List(), List()) + ).foreach: + case (list, expected) => + test(s"flattenNestedList returns [$expected]"): + assertEquals(Problem07.flattenNestedList(list), expected) \ No newline at end of file