From 547797801cbbb3383c398a86fcfdb421554cd739 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Thu, 19 Mar 2026 15:39:36 +0100 Subject: [PATCH] Problem 19 --- .../ninetyNineScalaProblems/Problem19.scala | 11 +++++++++++ .../Problem19Suite.scala | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/main/scala/ninetyNineScalaProblems/Problem19.scala create mode 100644 src/test/scala/ninetyNineScalaProblems/Problem19Suite.scala diff --git a/src/main/scala/ninetyNineScalaProblems/Problem19.scala b/src/main/scala/ninetyNineScalaProblems/Problem19.scala new file mode 100644 index 0000000..15fefff --- /dev/null +++ b/src/main/scala/ninetyNineScalaProblems/Problem19.scala @@ -0,0 +1,11 @@ +package ninetyNineScalaProblems + + +object Problem19: + def rotateLeft(n: Int, list: List[Any]): List[Any] = + list match + case Nil => + list + case _ => + val splitIndex = (list.length + n) % list.length + Problem18.slice(splitIndex, list.length, list) ::: Problem18.slice(0, splitIndex, list) \ No newline at end of file diff --git a/src/test/scala/ninetyNineScalaProblems/Problem19Suite.scala b/src/test/scala/ninetyNineScalaProblems/Problem19Suite.scala new file mode 100644 index 0000000..ad95dbe --- /dev/null +++ b/src/test/scala/ninetyNineScalaProblems/Problem19Suite.scala @@ -0,0 +1,17 @@ +package ninetyNineScalaProblems + +import scala.compiletime.ops.boolean + +class Problem19Suite extends munit.FunSuite: + List( + ((0, List(1, 2, 3, 4)), List(1, 2, 3, 4)), + ((1, List(1, 2, 3, 4)), List(2, 3, 4, 1)), + ((1, List(1)), List(1)), + ((0, List(1)), List(1)), + ((1, List()), List()), + ((0, List()), List()), + ((-1, List(1, 2, 3, 4)), List(4, 1, 2, 3)), + ).foreach: + case ((n, list), expected) => + test(s"rotateLeft returns [$expected]"): + assertEquals(Problem19.rotateLeft(n, list), expected) \ No newline at end of file