From 5935fcca99f7abad97895f461c199232f683d2e7 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Thu, 19 Mar 2026 15:39:45 +0100 Subject: [PATCH] Problem 23 --- .../scala/ninetyNineScalaProblems/Problem23.scala | 7 +++++++ .../ninetyNineScalaProblems/Problem23Suite.scala | 13 +++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/main/scala/ninetyNineScalaProblems/Problem23.scala create mode 100644 src/test/scala/ninetyNineScalaProblems/Problem23Suite.scala diff --git a/src/main/scala/ninetyNineScalaProblems/Problem23.scala b/src/main/scala/ninetyNineScalaProblems/Problem23.scala new file mode 100644 index 0000000..0129672 --- /dev/null +++ b/src/main/scala/ninetyNineScalaProblems/Problem23.scala @@ -0,0 +1,7 @@ +package ninetyNineScalaProblems + +import scala.util.Random + +object Problem23: + def randomSelect(n: Int, list: List[Any]): List[Any] = + Problem18.slice(0, n, Random.shuffle(list)) \ No newline at end of file diff --git a/src/test/scala/ninetyNineScalaProblems/Problem23Suite.scala b/src/test/scala/ninetyNineScalaProblems/Problem23Suite.scala new file mode 100644 index 0000000..9a8d51e --- /dev/null +++ b/src/test/scala/ninetyNineScalaProblems/Problem23Suite.scala @@ -0,0 +1,13 @@ +package ninetyNineScalaProblems + +class Problem23Suite extends munit.FunSuite: + List( + ((1, List(1)), 1), + ((0, List()), 0), + ((0, List(1)), 0), + ((0, List(1, 2, 3, 4, 5)), 0), + ((3, List(1, 2, 3, 4, 5)), 3), + ).foreach: + case ((n, list), expectedLength) => + test(s"randomSelect returns [$expectedLength]"): + assertEquals(Problem23.randomSelect(n, list).length, expectedLength) \ No newline at end of file