diff --git a/contents/bogo_sort/bogo_sort.md b/contents/bogo_sort/bogo_sort.md index 65d42eda2..30e9233ee 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) {% sample lang="go" %} [import:27-31, lang:"go"](code/go/bogo_sort.go) {% endmethod %} @@ -131,6 +133,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) {% sample lang="go" %} [import, lang:"go"](code/go/bogo_sort.go) {% 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)) + } + +}