|
|
@@ -210,7 +210,7 @@ print fib_wrap 5
|
|
|
print fib_wrap 6
|
|
|
print fib_wrap 7
|
|
|
print fib_wrap 8
|
|
|
-print fib_wrap 20
|
|
|
+print fib_wrap 23
|
|
|
|
|
|
make "f [[x] [
|
|
|
make "g [[y] [return add :x :y]]
|
|
|
@@ -306,3 +306,45 @@ make "fun2 [
|
|
|
]
|
|
|
print fun2
|
|
|
print fun1 5
|
|
|
+
|
|
|
+make "merge_sort [
|
|
|
+ [a]
|
|
|
+ [
|
|
|
+ if isempty :a [
|
|
|
+ return []
|
|
|
+ ] []
|
|
|
+ if isempty butfirst :a [
|
|
|
+ return :a
|
|
|
+ ] []
|
|
|
+ make "split [
|
|
|
+ [l]
|
|
|
+ [
|
|
|
+ if isempty :l [
|
|
|
+ return [[] []]
|
|
|
+ ] []
|
|
|
+ if isempty butfirst :l [
|
|
|
+ return list :l []
|
|
|
+ ] []
|
|
|
+ make "tmp split butlast butfirst :l
|
|
|
+ return list sentence join [] first :l first :tmp join last :tmp last :l
|
|
|
+ ]
|
|
|
+ ]
|
|
|
+ make "merge [
|
|
|
+ [l r]
|
|
|
+ [
|
|
|
+ if or isempty :l isempty :r [
|
|
|
+ return sentence :l :r
|
|
|
+ ] []
|
|
|
+ if lt first :l first :r [
|
|
|
+ return sentence join [] first :l merge butfirst :l :r
|
|
|
+ ] [
|
|
|
+ return sentence join [] first :r merge :l butfirst :r
|
|
|
+ ]
|
|
|
+ ]
|
|
|
+ ]
|
|
|
+ make "tmp split :a
|
|
|
+ return merge merge_sort first :tmp merge_sort last :tmp
|
|
|
+ ]
|
|
|
+]
|
|
|
+
|
|
|
+print merge_sort [4 6 1 8 3 0 7 9 5 2]
|