Forráskód Böngészése

TEST.添加一些数据

RegMs If 4 éve
szülő
commit
68f5f6f745
3 módosított fájl, 45 hozzáadás és 3 törlés
  1. 43 1
      in0
  2. 2 2
      list.go
  3. BIN
      mua

+ 43 - 1
in0

@@ -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]

+ 2 - 2
list.go

@@ -140,10 +140,10 @@ func opButFirst(val1 value) value {
 
 func opButLast(val1 value) value {
 	if !isWord(val1) && !isList(val1) {
-		panic(fmt.Errorf("butlast: %s (%s)", errWordOrListExpected, (val1.String())))
+		panic(fmt.Errorf("butlast: %s (%s)", errWordOrListExpected, val1.String()))
 	}
 	if isEmpty(val1) {
-		panic(fmt.Errorf("butlast: %s (%s)", errEmptyWordOrList, (val1.String())))
+		panic(fmt.Errorf("butlast: %s (%s)", errEmptyWordOrList, val1.String()))
 	}
 	if isWord(val1) {
 		s := escapeWord(toWord(val1))