From 5346ededce048d4baae16acdd5b3092d8a004890 Mon Sep 17 00:00:00 2001 From: mryouse Date: Fri, 15 Jul 2022 23:03:08 +0000 Subject: use built-in prepend and use more reduce --- libs/sort.neb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'libs') diff --git a/libs/sort.neb b/libs/sort.neb index e5a7eb5..b8f324b 100644 --- a/libs/sort.neb +++ b/libs/sort.neb @@ -1,9 +1,6 @@ ; sort.neb ; an exploration of sorting algorithms in neb -(func .prepend (lst item) - (list-reverse (append (list-reverse lst) item))) - (func bubble (lst) (def orig lst) (def working (list)) @@ -16,7 +13,7 @@ (block (redef swp #true) (redef working (append working (first (rest orig)))) - (redef orig (.prepend (rest (rest orig)) (first orig))))) + (redef orig (prepend (rest (rest orig)) (first orig))))) (#true (block (redef working (append working (first orig))) @@ -27,6 +24,12 @@ (bubble working) working)) +(func insertion-reduce (lst) + (reduce insert lst (list))) + +(func extend-reduce (lst1 lst2) + (reduce append lst2 lst1)) + (func extend (lst1 lst2) (def ret lst1) (for-each lst2 @@ -34,10 +37,14 @@ ret) (func insert (lst item) - (extend + (extend-reduce (append (take-while lst (< _item_ item)) item) (drop-while lst (< _item_ item)))) +(func insertion-reduce (lst) + (reduce insert lst (list))) + + (func insertion (lst) (def ret (list)) (for-each lst @@ -103,11 +110,11 @@ (redef before (append before (first consider))) (redef consider (rest consider))) (block - (redef after (.prepend after (first consider))) + (redef after (prepend after (first consider))) (if (eq? 1 (list-length consider)) (redef consider (list)) (redef consider - (.prepend (list-reverse (rest (list-reverse (rest consider)))) (last consider)))))) + (prepend (list-reverse (rest (list-reverse (rest consider)))) (last consider)))))) (print (concat "before: " (->string before))) (print (concat "after: " (->string after))) (print (concat "consider: " (->string consider)))) -- cgit v1.2.3