Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
--- /dev/null
+#!/usr/bin/env newlisp
+
+(define (Puissance P N)
+ (cond
+ ((= N 0) 1)
+ ((= N 1) P)
+ ((< N 0) (div 1 (Puissance P (- N))))
+ ((* P (Puissance P (- N 1))))))
+(println (Puissance 5 5))
+
+; https://fr.wikipedia.org/wiki/Algorithme_d%27Euclide
+(define (pgcd N P)
+ (cond
+ ((< N P) (pgcd P N))
+ ((= N P) N)
+ ((= P 0) N)
+ ((pgcd (- N P) P))))
+(println (pgcd 12 4))
+(println (pgcd 25 5))
+(println (pgcd 21 7))
+
+; https://fr.wikipedia.org/wiki/Coefficient_binomial
+(define (comb N P)
+ (cond
+ ((= P 0) 1)
+ ((= N P) 1)
+ ((+ (comb (- 1 N) P) (comb (- 1 N) (- 1 P))))))
+;(println (comb 5 4))
+
+(exit)
(if (null? L) nil
(if (= (first L) E) true
(mem E (rest L)))))
(if (null? L) nil
(if (= (first L) E) true
(mem E (rest L)))))
(println (mem 9 L))
(define (boolmemrec E L)
(println (mem 9 L))
(define (boolmemrec E L)
((null? L) nil)
((= (first L) E) true)
((mem E (rest L)))))
((null? L) nil)
((= (first L) E) true)
((mem E (rest L)))))
+(println "mem rec rt bool")
(println (boolmemrec 10 L))
(define (mem E L) ;la function mem a 2 arguments
(if (null? L) nil
(if (= (first L) E) L
(mem E (rest L)))))
(println (boolmemrec 10 L))
(define (mem E L) ;la function mem a 2 arguments
(if (null? L) nil
(if (= (first L) E) L
(mem E (rest L)))))
(println (mem 3 L))
(define (mem E L)
(println (mem 3 L))
(define (mem E L)
((null? L) nil)
((= (first L) E) L)
((mem E (rest L)))))
((null? L) nil)
((= (first L) E) L)
((mem E (rest L)))))
+(println "mem rec rt list")
(println (mem 9 L))
(println (member 9 L))
(println (mem 8 L))
(println (mem 9 L))
(println (member 9 L))
(println (mem 8 L))
(define (concatene L1 L2)
(if (null? L1) L2
(cons (first L1) (concatene (rest L1) L2))))
(define (concatene L1 L2)
(if (null? L1) L2
(cons (first L1) (concatene (rest L1) L2))))
+(println "concatene/append")
(setq C (concatene L M))
(println C)
(println (append L M))
(setq C (concatene L M))
(println C)
(println (append L M))
((= x (first L)) 0)
((+ 1 (rang x (rest L)))))
nil))
((= x (first L)) 0)
((+ 1 (rang x (rest L)))))
nil))
(println (rang 4 L))
(println (find 4 L))
(println (rang 0 L))
(println (rang 4 L))
(println (find 4 L))
(println (rang 0 L))
((null? L) '())
((= n 0) '())
((cons (first L) (tete (- n 1) (rest L))))))
((null? L) '())
((= n 0) '())
((cons (first L) (tete (- n 1) (rest L))))))
(println (tete 3 L))
(println (slice L 0 3))
(println (0 3 L))
(println (tete 3 L))
(println (slice L 0 3))
(println (0 3 L))
+(define (intersectL L1 L2)
- ((member (first L1) L2) (cons (first L1) (inter (rest L1) L2)))
- ((inter (rest L1) L2))))
-(println (inter L M))
+ ((member (first L1) L2) (cons (first L1) (intersectL (rest L1) L2)))
+ ((intersectL (rest L1) L2))))
+(println "intersectL/intersect")
+(println (intersectL L M))
(println (intersect L M))
(setq N '(1 9 3))
(println (intersect L M))
(setq N '(1 9 3))
((null? L2) nil)
((= (first L1) (first L2)) (inclu (rest L1) (rest L2)))
((inclu L1 (rest L2)))))
((null? L2) nil)
((= (first L1) (first L2)) (inclu (rest L1) (rest L2)))
((inclu L1 (rest L2)))))
(println (inclu N L))
(println (inclu L M))
;did not found a newlisp builtin equivalent function
(println (inclu N L))
(println (inclu L M))
;did not found a newlisp builtin equivalent function
((null? L1) L2)
((member (first L1) L2) (unionE (rest L1) L2))
((cons (first L1) (unionE (rest L1) L2)))))
((null? L1) L2)
((member (first L1) L2) (unionE (rest L1) L2))
((cons (first L1) (unionE (rest L1) L2)))))
+(println "unionE/union")
(println (unionE L M))
(println (unionE N L))
(println (unionE L M))
(println (unionE N L))
((null? L) 0)
((atom? L) 0)
((max (+ 1 (prof (first L))) (prof (rest L))))))
((null? L) 0)
((atom? L) 0)
((max (+ 1 (prof (first L))) (prof (rest L))))))
(println (prof L))
(println (prof T))
(println (prof L))
(println (prof T))
((null? L) nil)
((atom? L) (list L)) ;FIXME: the "casting" is not working properly
((append (aplatir (first L)) (aplatir (rest L))))))
((null? L) nil)
((atom? L) (list L)) ;FIXME: the "casting" is not working properly
((append (aplatir (first L)) (aplatir (rest L))))))
+(println "aplatir/flat")
;(println (aplatir T))
(println (flat T))
;(println (aplatir T))
(println (flat T))
((null? L) '())
((member (first L) (rest L)) (elim (rest L)))
((cons (first L) (elim (rest L))))))
((null? L) '())
((member (first L) (rest L)) (elim (rest L)))
((cons (first L) (elim (rest L))))))
(println (elim C))
(println (unique C))
(println (elim C))
(println (unique C))
(cond
((null? L) '())
((append (reverseL (rest L)) (list (first L))))))
(cond
((null? L) '())
((append (reverseL (rest L)) (list (first L))))))
+(println "reverseL/reverse")
(println (reverseL L))
(println (reverse L))
(println (reverseL L))
(println (reverse L))
((null? L) '())
((>= (first L) n) (list< n (rest L)))
((cons (first L) (list< n (rest L))))))
((null? L) '())
((>= (first L) n) (list< n (rest L)))
((cons (first L) (list< n (rest L))))))
(println (list< 5 L))
(println (list< 5 C))
(println (list< 5 L))
(println (list< 5 C))
((null? L) '())
((< (first L) n) (list>= n (rest L)))
((cons (first L) (list>= n (rest L))))))
((null? L) '())
((< (first L) n) (list>= n (rest L)))
((cons (first L) (list>= n (rest L))))))
(println (list>= 5 C))
(exit)
(println (list>= 5 C))
(exit)