commit 09af2a25e8ac148d85e51fe5b403f1e06ee8470d Author: Jakob Scheid Date: Thu Mar 19 15:36:32 2026 +0100 Problem 01 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