Implement more exercices' functions
[TD_LISP.git] / exercices / lists.lsp
CommitLineData
72128279
JB
1#!/usr/bin/env newlisp
2
3(setq L '(1 9 3 7 0 5))
4(setq M '(2 6 5 4 0 1 3))
5
6(define (mem E L) ;la function mem a 2 arguments
7 (if (null? L) nil
8 (if (= (first L) E) true
9 (mem E (rest L)))))
10(println (mem 9 L))
11
12(define (boolmemrec E L)
13 (cond
14 ((null? L) nil)
15 ((= (first L) E) true)
16 ((mem E (rest L)))))
17(println (boolmemrec 10 L))
18
19(define (mem E L) ;la function mem a 2 arguments
20 (if (null? L) nil
21 (if (= (first L) E) L
22 (mem E (rest L)))))
23(println (mem 3 L))
24
25(define (mem E L)
26 (cond
27 ((null? L) nil)
28 ((= (first L) E) L)
29 ((mem E (rest L)))))
30(println (mem 9 L))
31(println (member 9 L))
32(println (mem 8 L))
33(println (member 8 L))
34
35(define (concatene L1 L2)
36 (if (null? L1) L2
37 (cons (first L1) (concatene (rest L1) L2))))
38(println (concatene L M))
39(println (append L M))
40
41;(trace true)
42
43(define (rang x L)
44 (if (boolmemrec x L)
45 (cond
46 ((= x (first L)) 0)
47 ((+ 1 (rang x (rest L)))))
48 nil))
49(println (rang 4 L))
50(println (find 4 L))
51(println (rang 0 L))
52(println (find 0 L))
53
54;(trace nil)
55
56(define (tete n L)
57 (cond
58 ((null? L) nil)
59 ((= n 0) nil)
60 ((cons (first L) (tete (- n 1) (rest L))))))
61;FIXME: return nil after the first n elements in the list
62(println (tete 3 L))
63(println (slice L 0 3))
64(println (0 3 L))
65
66(define (inter L1 L2)
67 (cond
68 ((null? L1) nil)
69 ((member (first L1) L2) (cons (first L1) (inter (rest L1) L2)))
70 ((inter (rest L1) L2))))
71;FIXME: return nil after ...
72(println (inter L M))
73(println (intersect L M))
74
75(setq N '(1 9 3))
76(define (inclu L1 L2)
77 (cond
78 ((null? L1) true)
79 ((null? L2) nil)
80 ((= (first L1) (first L2)) (inclu (rest L1) (rest L2)))
81 ((inclu L1 (rest L2)))))
82(println (inclu N L))
83(println (inclu L M))
84;did not found a newlisp builtin equivalent function
85
86(exit)