From 659d211d8c5987017c8760c94b3cdc801eae7860 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Thu, 19 Mar 2026 15:39:20 +0100 Subject: [PATCH] Problem 08 --- .../ninetyNineScalaProblems/Problem08.scala | 17 +++++++++++++++++ .../Problem08Suite.scala | 15 +++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/main/scala/ninetyNineScalaProblems/Problem08.scala create mode 100644 src/test/scala/ninetyNineScalaProblems/Problem08Suite.scala diff --git a/src/main/scala/ninetyNineScalaProblems/Problem08.scala b/src/main/scala/ninetyNineScalaProblems/Problem08.scala new file mode 100644 index 0000000..cb6df48 --- /dev/null +++ b/src/main/scala/ninetyNineScalaProblems/Problem08.scala @@ -0,0 +1,17 @@ +package ninetyNineScalaProblems + +import scala.annotation.tailrec + +object Problem08: + def eliminateConsecutiveDuplicates(list: List[Any]): List[Any] = + @tailrec + def loop(cursor: List[Any], acc: List[Any]): List[Any] = + cursor match + case e1 :: e2 :: tail if e1 == e2 => + loop(tail, e1 :: acc) + case e :: tail => + loop(tail, e :: acc) + case Nil => + acc + + loop(list, List()).reverse \ No newline at end of file diff --git a/src/test/scala/ninetyNineScalaProblems/Problem08Suite.scala b/src/test/scala/ninetyNineScalaProblems/Problem08Suite.scala new file mode 100644 index 0000000..1166aeb --- /dev/null +++ b/src/test/scala/ninetyNineScalaProblems/Problem08Suite.scala @@ -0,0 +1,15 @@ +package ninetyNineScalaProblems + +class Problem08Suite extends munit.FunSuite: + List( + (List(1, 2, 3, 4), List(1, 2, 3, 4)), + (List(1, 2, 2, 3), List(1, 2, 3)), + (List(1, 2, 3, 2), List(1, 2, 3, 2)), + (List(1, 2, 3, 3), List(1, 2, 3)), + (List(1, 1), List(1)), + (List(), List()), + (List(1), List(1)), + ).foreach: + case (list, expected) => + test(s"eliminateConsecutiveDuplicates returns [$expected]"): + assertEquals(Problem08.eliminateConsecutiveDuplicates(list), expected) \ No newline at end of file