diff --git a/contents/bogo_sort/bogo_sort.md b/contents/bogo_sort/bogo_sort.md index 5fcafa015..d23475740 100644 --- a/contents/bogo_sort/bogo_sort.md +++ b/contents/bogo_sort/bogo_sort.md @@ -51,6 +51,8 @@ In code, it looks something like this: [import:10-12, lang:"factor"](code/factor/bogo_sort.factor) {% sample lang="f90" %} [import:24-32, lang:"fortran"](code/fortran/bogo.f90) +{% sample lang="racket" %} +[import:3-8, lang:"lisp"](code/racket/bogo_sort.rkt) {% sample lang="st" %} [import:2-6, lang:"st"](code/smalltalk/bogosort.st) {% endmethod %} @@ -103,6 +105,8 @@ We are done here! [import, lang:"factor"](code/factor/bogo_sort.factor) {% sample lang="f90" %} [import, lang:"fortran"](code/fortran/bogo.f90) +{% sample lang="racket" %} +[import, lang:"lisp"](code/racket/bogo_sort.rkt) {% sample lang="st" %} [import, lang:"st"](code/smalltalk/bogosort.st) {% endmethod %} diff --git a/contents/bogo_sort/code/racket/bogo_sort.rkt b/contents/bogo_sort/code/racket/bogo_sort.rkt new file mode 100755 index 000000000..dfc3b1c70 --- /dev/null +++ b/contents/bogo_sort/code/racket/bogo_sort.rkt @@ -0,0 +1,24 @@ +#lang racket + +(define (bogo_sort l) + (if (is_sorted? l) + l + (bogo_sort (shuffle l)) + ) + ) + +(define (is_sorted? l) + (if (> (length l) 1) + (if (> (first l) (second l)) + false + (is_sorted? (rest l)) + ) + true + ) + ) + +(define unsorted_list '(20 -3 50 1 -6 59)) +(display "unsorted list: ") +(displayln unsorted_list) +(display "sorted list: ") +(displayln (bogo_sort unsorted_list))