From 09af2a25e8ac148d85e51fe5b403f1e06ee8470d Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Thu, 19 Mar 2026 15:36:32 +0100 Subject: [PATCH] Problem 01 --- .gitignore | 6 ++++++ build.sbt | 17 +++++++++++++++++ .../ninetyNineScalaProblems/Problem01.scala | 13 +++++++++++++ .../Problem01Suite.scala | 12 ++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 .gitignore create mode 100644 build.sbt create mode 100644 src/main/scala/ninetyNineScalaProblems/Problem01.scala create mode 100644 src/test/scala/ninetyNineScalaProblems/Problem01Suite.scala diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1eeab4c --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/.bsp/ +target/ +.bloop +.metals +.vscode +/project \ No newline at end of file diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..ca7612b --- /dev/null +++ b/build.sbt @@ -0,0 +1,17 @@ +import Dependencies._ + +ThisBuild / scalaVersion := "3.8.2" +ThisBuild / version := "0.1.0-SNAPSHOT" +ThisBuild / organization := "com.example" +ThisBuild / organizationName := "example" + +lazy val root = (project in file(".")) + .settings( + name := "ninetyNineScalaProblems", + libraryDependencies += munit % Test + ) + +// See https://www.scala-sbt.org/1.x/docs/Using-Sonatype.html for instructions on how to publish to Sonatype. + + +libraryDependencies += "org.scalameta" %% "munit" % "1.0.4" % Test \ No newline at end of file diff --git a/src/main/scala/ninetyNineScalaProblems/Problem01.scala b/src/main/scala/ninetyNineScalaProblems/Problem01.scala new file mode 100644 index 0000000..23abcdf --- /dev/null +++ b/src/main/scala/ninetyNineScalaProblems/Problem01.scala @@ -0,0 +1,13 @@ +package ninetyNineScalaProblems + +object Problem01: + def lastElement(list: List[Any]): Option[Any] = + list match + case Nil => None + case _ => Some(list(list.length - 1)) + +object Problem01Stdlib: + def lastElement(list: List[Any]): Option[Any] = + list match + case Nil => None + case _ => Some(list.last) \ No newline at end of file diff --git a/src/test/scala/ninetyNineScalaProblems/Problem01Suite.scala b/src/test/scala/ninetyNineScalaProblems/Problem01Suite.scala new file mode 100644 index 0000000..c64326a --- /dev/null +++ b/src/test/scala/ninetyNineScalaProblems/Problem01Suite.scala @@ -0,0 +1,12 @@ +package ninetyNineScalaProblems + +class Problem01Suite extends munit.FunSuite: + List( + (List(1, 2, 3, 4, 5), Some(5)), + (List(1), Some(1)), + (List(), None) + ).foreach: + case (list, expected) => + test(s"lastElement returns [$expected]"): + assertEquals(Problem01.lastElement(list), expected, "Problem01") + assertEquals(Problem01Stdlib.lastElement(list), expected, "Problem01Stdlib") \ No newline at end of file