--- /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)))))
+(println "mem rt bool")
(println (mem 9 L))
(define (boolmemrec E 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 "mem rt list")
(println (mem 3 L))
(define (mem E 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))
(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))
((= x (first L)) 0)
((+ 1 (rang x (rest L)))))
nil))
+(println "rang/find")
(println (rang 4 L))
(println (find 4 L))
(println (rang 0 L))
((null? L) '())
((= n 0) '())
((cons (first L) (tete (- n 1) (rest L))))))
+(println "tete/slice")
(println (tete 3 L))
(println (slice L 0 3))
(println (0 3 L))
-(define (inter L1 L2)
+(define (intersectL L1 L2)
(cond
((null? L1) '())
- ((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))
((null? L2) nil)
((= (first L1) (first L2)) (inclu (rest L1) (rest L2)))
((inclu L1 (rest L2)))))
+(println "inclu")
(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)))))
+(println "unionE/union")
(println (unionE L M))
(println (unionE N L))
+(println (union N L))
;(trace true)
((null? L) 0)
((atom? L) 0)
((max (+ 1 (prof (first L))) (prof (rest L))))))
+(println "prof")
(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))))))
+(println "aplatir/flat")
;(println (aplatir T))
(println (flat T))
((null? L) '())
((member (first L) (rest L)) (elim (rest L)))
((cons (first L) (elim (rest L))))))
+(println "elim/unique")
(println (elim C))
(println (unique C))
(cond
((null? L) '())
((append (reverseL (rest L)) (list (first L))))))
+(println "reverseL/reverse")
(println (reverseL L))
(println (reverse L))
((null? L) '())
((>= (first L) n) (list< n (rest L)))
((cons (first L) (list< n (rest L))))))
+(println "list<")
(println (list< 5 L))
(println (list< 5 C))
((null? L) '())
((< (first L) n) (list>= n (rest L)))
((cons (first L) (list>= n (rest L))))))
+(println "list>=")
(println (list>= 5 C))
(exit)