4 (define (Puissance1 P N)
8 ((< N 0) (div 1 (Puissance1 P (- N))))
9 ((* P (Puissance1 P (- N 1))))))
10 (println "Puissance1")
11 (println (Puissance1 5 5))
12 (println (Puissance1 2 12))
17 (define (Puissance2 P N)
23 ((= (mod N 2) 0) (Puissance2 (Puissance2 P 2) (/ N 2)))
24 ((* P (Puissance2 (Puissance2 P 2) (/ (- N 1) 2))))))))
25 (println "Puissance2")
26 (println (Puissance2 5 5))
27 (println (Puissance2 2 12))
31 ; https://fr.wikipedia.org/wiki/Algorithme_d%27Euclide
45 ; https://fr.wikipedia.org/wiki/Coefficient_binomial
46 ; relation de pascal commenté
51 ;((+ (comb (- N 1) P) (comb (- N 1) (- P 1))))))
52 ((/ (* N (comb (- N 1) (- P 1))) P))))
56 (println "(comb 12 8) = "(comb 12 8))
61 (setq L '(3 7 + 4 2 + *))
62 (setq M '(4 3 7 + * 2 -))
63 (setq N '(10 10 5 / +))
64 (define (calculExp P L)
67 ; all these conditions could probably be simplified
68 ((= (first L) '+) (calculExp (cons (+ (P 1) (first P)) (rest (rest P))) (rest L)))
69 ((= (first L) '-) (calculExp (cons (- (P 1) (first P)) (rest (rest P))) (rest L)))
70 ((= (first L) '*) (calculExp (cons (* (P 1) (first P)) (rest (rest P))) (rest L)))
71 ;FIXME: test for divide by zero
72 ((= (first L) '/) (calculExp (cons (/ (P 1) (first P)) (rest (rest P))) (rest L)))
73 ((number? (first L)) (calculExp (cons (first L) P) (rest L)))))
75 (println (calculExp '() L))
77 (println (calculExp '() M))
78 (println (calculExp '() N))
82 (setq Q '(+ (* x 0) (* 10 (+ y 0))))
83 (define (algsimplificator L)
86 ((= (first L) ) (rest L))
89 (println "algsimplificator")
90 ;(println algsimplificator(Q))
96 ((> N 1) (+ (fibonacci (- N 1)) (fibonacci (- N 2))))))
98 ;(println (fibonacci 21))
99 ;(println (fibonacci 14))
100 (println (fibonacci 20))
101 (println (time (fibonacci 20)))
105 (define (fibo:fibo n)
106 (if (not fibo:mem) (set 'fibo:mem '(0 1)))
108 (push (+ (fibo:mem -1) (fibo:mem -2)) fibo:mem -1))
112 (println (time (fibo 20)))