From a0321ccdf9cdf83f78e8aecfb2d1731d84ed2093 Mon Sep 17 00:00:00 2001 From: Vexatos Date: Sun, 21 Oct 2018 01:01:55 +0200 Subject: [PATCH] Implemented Bogo Sort in Crystal --- contents/bogo_sort/bogo_sort.md | 4 ++++ contents/bogo_sort/code/crystal/bogo.cr | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 contents/bogo_sort/code/crystal/bogo.cr diff --git a/contents/bogo_sort/bogo_sort.md b/contents/bogo_sort/bogo_sort.md index 8de514971..4c66adbc4 100644 --- a/contents/bogo_sort/bogo_sort.md +++ b/contents/bogo_sort/bogo_sort.md @@ -61,6 +61,8 @@ In code, it looks something like this: [import:93-113, lang:"asm-x64"](code/asm-x64/bogo_sort.s) {% sample lang="lisp" %} [import:20-24, lang:"lisp"](code/clisp/bogo-sort.lisp) +{% sample lang="crystal" %} +[import:10-14, lang:"crystal"](code/crystal/bogo.cr) {% endmethod %} That's it. @@ -121,6 +123,8 @@ We are done here! [import, lang:"asm-x64"](code/asm-x64/bogo_sort.s) {% sample lang="lisp" %} [import, lang:"lisp"](code/clisp/bogo-sort.lisp) +{% sample lang="crystal" %} +[import, lang:"crystal"](code/crystal/bogo.cr) {% endmethod %} diff --git a/contents/bogo_sort/code/crystal/bogo.cr b/contents/bogo_sort/code/crystal/bogo.cr new file mode 100644 index 000000000..8d622d567 --- /dev/null +++ b/contents/bogo_sort/code/crystal/bogo.cr @@ -0,0 +1,22 @@ +def is_sorted?(a) + 0.upto(a.size - 2) do |i| + if a[i] > a[i + 1] + return false + end + end + true +end + +def bogo_sort!(a) + while !is_sorted?(a) + a.shuffle! + end +end + +def main + a = [1.0, 3.0, 2.0, 4.0] + bogo_sort!(a) + puts a +end + +main