diff --git a/contents/bogo_sort/bogo_sort.md b/contents/bogo_sort/bogo_sort.md index d46241c06..3bd103e52 100644 --- a/contents/bogo_sort/bogo_sort.md +++ b/contents/bogo_sort/bogo_sort.md @@ -31,6 +31,8 @@ In code, it looks something like this: [import:17-20, lang:"haskell"](code/haskell/bogoSort.hs) {% sample lang="m" %} [import:21-28, lang:"matlab"](code/matlab/bogosort.m) +{% sample lang="lua" %} +[import:1-22, lang="lua"](code/lua/bogosort.lua) {% sample lang="cpp" %} [import:33-38, lang:"c_cpp"](code/c++/bogosort.cpp) {% sample lang="rs" %} @@ -73,6 +75,8 @@ We are done here! [import, lang:"haskell"](code/haskell/bogoSort.hs) {% sample lang="m" %} [import, lang:"matlab"](code/matlab/bogosort.m) +{% sample lang="lua" %} +[import, lang="lua"](code/lua/bogosort.lua) {% sample lang="cpp" %} [import, lang:"c_cpp"](code/c++/bogosort.cpp) {% sample lang="rs" %} diff --git a/contents/bogo_sort/code/lua/bogosort.lua b/contents/bogo_sort/code/lua/bogosort.lua new file mode 100644 index 000000000..f6c717e7d --- /dev/null +++ b/contents/bogo_sort/code/lua/bogosort.lua @@ -0,0 +1,28 @@ +local function shuffle(arr) + for i = 1, #arr-1 do + local rand = math.random(i,#arr) + arr[i], arr[rand] = arr[rand], arr[i] + end +end + +local function issorted(arr) + for i = 1,#arr-1 do + if arr[i] > arr[i+1] then + return false + end + end + return true +end + +function bogosort(arr) + while not issorted(arr) do + shuffle(arr) + end +end + +local arr = {1, 45, 756, 4569, 56, 3, 8, 5, -10, -4} +print(("Unsorted array: {%s}"):format(table.concat(arr,", "))) + +bogosort(arr) + +print(("Sorted array: {%s}"):format(table.concat(arr,", ")))