From ea44f417f365348b54f2150a214fef11e43af4fd Mon Sep 17 00:00:00 2001 From: Amaras Date: Wed, 15 Jul 2020 15:12:04 +0200 Subject: [PATCH 1/2] Added Bogosort in Coconut --- contents/bogo_sort/bogo_sort.md | 4 ++++ contents/bogo_sort/code/coconut/bogo.coco | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 contents/bogo_sort/code/coconut/bogo.coco diff --git a/contents/bogo_sort/bogo_sort.md b/contents/bogo_sort/bogo_sort.md index cc8e9ce2a..ab5bf97d5 100644 --- a/contents/bogo_sort/bogo_sort.md +++ b/contents/bogo_sort/bogo_sort.md @@ -69,6 +69,8 @@ In code, it looks something like this: [import:12-16, lang:"scala"](code/scala/bogo.scala) {% sample lang="go" %} [import:27-31, lang:"go"](code/go/bogo_sort.go) +{% sample lang="coco" %} +[import:11-13, lang:"coconut"](code/coconut/bogo.coco) {% endmethod %} That's it. @@ -137,6 +139,8 @@ We are done here! [import, lang:"scala"](code/scala/bogo.scala) {% sample lang="go" %} [import, lang:"go"](code/go/bogo_sort.go) +{% sample lang="coco" %} +[import, lang:"coconut"](code/coconut/bogo.coco) {% endmethod %} diff --git a/contents/bogo_sort/code/coconut/bogo.coco b/contents/bogo_sort/code/coconut/bogo.coco new file mode 100644 index 000000000..06e1e1a01 --- /dev/null +++ b/contents/bogo_sort/code/coconut/bogo.coco @@ -0,0 +1,20 @@ +import random + + +def is_sorted(a): + for x, y in zip(a, a[1:]): + if x > y: + return False + return True + + +def bogo_sort(a): + while not is_sorted(a): + random.shuffle(a) + + +if __name__ == '__main__': + a = [1, 3, 2, 4] + print('Unsorted:', a) + bogo_sort(a) + print('Sorted:', a) From 3495f53ae39347b143f80d3540ca6384ed0a91b9 Mon Sep 17 00:00:00 2001 From: Amaras Date: Sun, 19 Jul 2020 19:53:35 +0200 Subject: [PATCH 2/2] Addressed @berquist review: functional style for is_sorted --- contents/bogo_sort/bogo_sort.md | 2 +- contents/bogo_sort/code/coconut/bogo.coco | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/contents/bogo_sort/bogo_sort.md b/contents/bogo_sort/bogo_sort.md index ab5bf97d5..5f493e0e1 100644 --- a/contents/bogo_sort/bogo_sort.md +++ b/contents/bogo_sort/bogo_sort.md @@ -70,7 +70,7 @@ In code, it looks something like this: {% sample lang="go" %} [import:27-31, lang:"go"](code/go/bogo_sort.go) {% sample lang="coco" %} -[import:11-13, lang:"coconut"](code/coconut/bogo.coco) +[import:6-8, lang:"coconut"](code/coconut/bogo.coco) {% endmethod %} That's it. diff --git a/contents/bogo_sort/code/coconut/bogo.coco b/contents/bogo_sort/code/coconut/bogo.coco index 06e1e1a01..bc467bafb 100644 --- a/contents/bogo_sort/code/coconut/bogo.coco +++ b/contents/bogo_sort/code/coconut/bogo.coco @@ -1,12 +1,7 @@ import random -def is_sorted(a): - for x, y in zip(a, a[1:]): - if x > y: - return False - return True - +is_sorted = l -> (l, l[1:]) |*> zip |> map$(t -> t[0] <= t[1]) |> all def bogo_sort(a): while not is_sorted(a):