From 79fa83ef672c73a5da39743603a9b596180ac5da Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Thu, 19 Mar 2026 15:39:17 +0100 Subject: [PATCH] Problem 06 --- .../ninetyNineScalaProblems/Problem06.scala | 27 +++++++++++++++++++ .../Problem06Suite.scala | 15 +++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/main/scala/ninetyNineScalaProblems/Problem06.scala create mode 100644 src/test/scala/ninetyNineScalaProblems/Problem06Suite.scala diff --git a/src/main/scala/ninetyNineScalaProblems/Problem06.scala b/src/main/scala/ninetyNineScalaProblems/Problem06.scala new file mode 100644 index 0000000..28855b4 --- /dev/null +++ b/src/main/scala/ninetyNineScalaProblems/Problem06.scala @@ -0,0 +1,27 @@ +package ninetyNineScalaProblems + +import scala.annotation.tailrec + +object Problem06: + def isPalindromeList(list: List[Any]): Boolean = + @tailrec + def loop(cursor: List[Any]): Boolean = + cursor match + case head :: Nil => + true + case head :: tail => + tail.reverse match + case e :: t if e == head => + loop(t) + case e :: t => + false + case Nil => + false + case Nil => + true + + loop(list) + +object Problem06Stdlib: + def isPalindromeList(list: List[Any]): Boolean = + list == list.reverse \ No newline at end of file diff --git a/src/test/scala/ninetyNineScalaProblems/Problem06Suite.scala b/src/test/scala/ninetyNineScalaProblems/Problem06Suite.scala new file mode 100644 index 0000000..639bd8b --- /dev/null +++ b/src/test/scala/ninetyNineScalaProblems/Problem06Suite.scala @@ -0,0 +1,15 @@ +package ninetyNineScalaProblems + +class Problem06Suite extends munit.FunSuite: + List( + (List(1), true), + (List(), true), + (List(0, 0, 0), true), + (List(5, 4, 3, 4, 5), true), + (List(5, 4, 4, 5), true), + (List(1, 2, 3, 4, 5), false), + ).foreach: + case (list, expected) => + test(s"isPalindromeList returns [$expected]"): + assertEquals(Problem06.isPalindromeList(list), expected) + assertEquals(Problem06Stdlib.isPalindromeList(list), expected) \ No newline at end of file