More list exercise functions
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 27 Apr 2017 20:42:43 +0000 (22:42 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 27 Apr 2017 20:42:43 +0000 (22:42 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
exercices/lists.lsp

index 39114ad8d0ba3f786f287ec5e8c015209ff50add..25360bcf166d051570501485b0e2ed6ddb61c5ca 100755 (executable)
 (println "list>=")
 (println (list>= 5 C))
 
+;(trace true)
+
+(define (qsort L)
+  (cond
+    ((null? L) '())
+    ((append 
+       ;the pivot is the first element of the list
+       (qsort (list< (first L) (rest L))) 
+       (cons (first L) '()) 
+       (qsort (list>= (first L) (rest L)))))))
+(println "qsort")
+(println (qsort C))
+
+;(trace nil)
+
+;we suppose both lists are flat
+(setq L1 '(A ? ? B C D ?))
+(setq L2 '(? A B ? C ? ? D))
+
+(define (removeC c L)
+  (cond
+    ((null? L) '())
+    ((= c (first L))) (removeC c (rest L))
+    (((cons (first L) (removeC c (rest L)))))))
+(println (removeC A L1))
+
+(define (filtre L1 L2 C)
+  (cond 
+    ((and (null? L1) (null? L2)) true)
+    ((and (not (null? L1)) (null? L2)) nil)
+    ((and (null? L1) (not (null? L2))) nil)
+    ((and (inclu L1 L2) (inclu L2 L1) true))))
+;(println "filtre")
+;(println (filtre L1 L2 ?))
+
 (exit)