From 141cd97a7eda181530334b00311a02ce394e3dcb Mon Sep 17 00:00:00 2001 From: joelsven Date: Sat, 3 Nov 2018 21:21:17 +0100 Subject: [PATCH] Add bogo sort in scala --- contents/bogo_sort/bogo_sort.md | 4 ++++ contents/bogo_sort/code/scala/bogo.scala | 25 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 contents/bogo_sort/code/scala/bogo.scala diff --git a/contents/bogo_sort/bogo_sort.md b/contents/bogo_sort/bogo_sort.md index 7e6f6223f..5e47c5ac6 100644 --- a/contents/bogo_sort/bogo_sort.md +++ b/contents/bogo_sort/bogo_sort.md @@ -65,6 +65,8 @@ In code, it looks something like this: [import:10-14, lang:"crystal"](code/crystal/bogo.cr) {% sample lang="r" %} [import:1-6, lang:"r"](code/r/bogo_sort.r) +{% sample lang="scala" %} +[import:12-16, lang:"scala"](code/scala/bogo.scala) {% endmethod %} That's it. @@ -129,6 +131,8 @@ We are done here! [import, lang:"crystal"](code/crystal/bogo.cr) {% sample lang="r" %} [import, lang:"r"](code/r/bogo_sort.r) +{% sample lang="scala" %} +[import, lang:"scala"](code/scala/bogo.scala) {% endmethod %} diff --git a/contents/bogo_sort/code/scala/bogo.scala b/contents/bogo_sort/code/scala/bogo.scala new file mode 100644 index 000000000..25bd9d729 --- /dev/null +++ b/contents/bogo_sort/code/scala/bogo.scala @@ -0,0 +1,25 @@ +import scala.util.Random.shuffle + +object BogoSort { + + def isSorted(list: List[Int]): Boolean = + list match { + case Nil => true + case a :: b :: _ if a > b => false + case _ :: tail => isSorted(tail) + } + + def bogoSort(list: List[Int]): List[Int] = + isSorted(list) match { + case false => bogoSort(shuffle(list)) + case _ => list + } + + def main(args: Array[String]): Unit = { + val unsorted = List(5, 2, 7, 1, -5) + + println("Unsorted list is " + unsorted) + println(" Sorted list is " + bogoSort(unsorted)) + } + +}