summaryrefslogtreecommitdiff
path: root/sem_4/progaapp/TP1
diff options
context:
space:
mode:
authorGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:05:53 +0200
committerGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:05:53 +0200
commit9fe033ea88c2f705ec18c232873d056e0c229d72 (patch)
tree0647dc8c51610c7336c88c04de2068ea14b21e17 /sem_4/progaapp/TP1
Initial commit
Diffstat (limited to 'sem_4/progaapp/TP1')
-rw-r--r--sem_4/progaapp/TP1/GaspardCouletbin0 -> 20480 bytes
-rw-r--r--sem_4/progaapp/TP1/day.bak15
-rw-r--r--sem_4/progaapp/TP1/day.rkt103
-rw-r--r--sem_4/progaapp/TP1/divers.bak11
-rw-r--r--sem_4/progaapp/TP1/divers.rkt39
-rw-r--r--sem_4/progaapp/TP1/fichiertd.rkt3
-rw-r--r--sem_4/progaapp/TP1/lecomptestbon.bak164
-rw-r--r--sem_4/progaapp/TP1/tdp1.bak16
-rw-r--r--sem_4/progaapp/TP1/tortue.bak5
-rw-r--r--sem_4/progaapp/TP1/tortue.rkt6
-rw-r--r--sem_4/progaapp/TP1/tp1.rkt111
-rw-r--r--sem_4/progaapp/TP1/tp2.rkt174
12 files changed, 647 insertions, 0 deletions
diff --git a/sem_4/progaapp/TP1/GaspardCoulet b/sem_4/progaapp/TP1/GaspardCoulet
new file mode 100644
index 0000000..2cf6a87
--- /dev/null
+++ b/sem_4/progaapp/TP1/GaspardCoulet
Binary files differ
diff --git a/sem_4/progaapp/TP1/day.bak b/sem_4/progaapp/TP1/day.bak
new file mode 100644
index 0000000..a363622
--- /dev/null
+++ b/sem_4/progaapp/TP1/day.bak
@@ -0,0 +1,15 @@
+#lang racket
+(define bissextile
+ (lambda (x)
+ ( if (= (modulo x 4) 0)
+ (if (not (= ( modulo x 100) 0))
+ (#t)
+ (if (= ( modulo x 400) 0)
+ (#t)
+ (#f))
+ )
+ (#f))
+ )
+ )
+
+ \ No newline at end of file
diff --git a/sem_4/progaapp/TP1/day.rkt b/sem_4/progaapp/TP1/day.rkt
new file mode 100644
index 0000000..c55d5f5
--- /dev/null
+++ b/sem_4/progaapp/TP1/day.rkt
@@ -0,0 +1,103 @@
+#lang racket
+(define bissextile
+ (lambda (x)
+ ( if (= (modulo x 4) 0)
+ (if (not (= ( modulo x 100) 0))
+ #t
+ (if (= ( modulo x 400) 0)
+ #t
+ #f)
+ )
+ #f)
+ )
+ )
+
+(define nb-annee-bissextile
+ (lambda (x)
+ (letrec ( (f
+ (lambda (x i)
+ (if (not (= x 1900))
+ (if (bissextile x)
+ (f (- x 1) (+ i 1))
+ (f (- x 1) i)
+ )
+ i)
+ )
+ ))
+ ( f x 0)
+ )
+ )
+ )
+
+(define nb-jours-au-1-jan
+ (lambda (x)
+ (letrec ((f
+ (lambda (x i)
+ (if (not(= x 1))
+ (if (or (= 2 x) (= x 4) (= x 6) (= x 9) (= x 11))
+ (if (= x 2)
+ (f (- x 1) ( + i 28))
+ (f (- x 1) (+ i 30))
+ )
+ (f (- x 1) (+ i 31))
+ )
+ ( + i 31)
+ )
+ )
+ ))
+ (if (= 1 x)
+ 0
+ ( f (- x 1) 0)
+ )
+ )
+ )
+ )
+
+(define nb-jours (lambda (m d y)
+ (let ((i (if (= y 1900)
+ 0
+ (+ (* (nb-annee-bissextile y) 1) (* 365 (- y 1900)))
+ )
+ ))
+ (let ((i (+ i (nb-jours-au-1-jan m))))
+ (let ((i (+ i d)))
+ (- i 1)
+ )
+ )
+ )
+ )
+ )
+
+(define jour-semaine (lambda (m d y)
+ (let ((nbjour (nb-jours m d y)))
+ (if (= (modulo nbjour 7) 0)
+ (display "Lundi")
+ (if (= (modulo nbjour 7) 1)
+ (display "Mardi")
+ (if (= (modulo nbjour 7) 2)
+ (display "Mercredi")
+ (if (= (modulo nbjour 7) 3)
+ (display "Jeudi")
+ (if (= (modulo nbjour 7) 4)
+ (display "Vendredi")
+ (if (= (modulo nbjour 7) 5)
+ (display "Samedi")
+ (if (= (modulo nbjour 7) 6)
+ (display "Dimanche")
+ (display "whut?")
+ )
+
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+
+
+
+
+ \ No newline at end of file
diff --git a/sem_4/progaapp/TP1/divers.bak b/sem_4/progaapp/TP1/divers.bak
new file mode 100644
index 0000000..f9c02be
--- /dev/null
+++ b/sem_4/progaapp/TP1/divers.bak
@@ -0,0 +1,11 @@
+#lang racket
+(define genliste ( lambda (d f p)
+ (letrec ((f(lambda (li d)
+ (if (< f (+ d p) )
+ ( f (append li (+ d p)) (+ d p))
+ li)
+ )))
+ (f '() d)
+ )
+ ))
+(define somme (lambda (x y z) (+ x y z))) \ No newline at end of file
diff --git a/sem_4/progaapp/TP1/divers.rkt b/sem_4/progaapp/TP1/divers.rkt
new file mode 100644
index 0000000..576f153
--- /dev/null
+++ b/sem_4/progaapp/TP1/divers.rkt
@@ -0,0 +1,39 @@
+;Gaspard Coulet 21601609 Groupe B
+#lang racket
+
+;Exercice 9 :
+(define genliste (lambda (d f p)
+ (letrec ((fun(lambda (li d)
+ (if (> f (+ d p) )
+ ( fun (append li (list (+ d p))) (+ d p))
+ li)
+ )))
+ (fun '() (- d p))
+ )
+ ))
+
+;Exercice 10 :
+
+(define make-lancer (lambda (x y z)
+ (list x y z)))
+(define premier (lambda ( li ) (car li)))
+(define deuxieme (lambda ( li ) (cadr li)))
+(define troisieme (lambda (li) (caddr li)))
+
+;Exercice 11 :
+(define gagnant? (lambda (li) (and (xor(xor ( = (premier li ) 4) (= (deuxieme li) 4)) (= (troisieme li) 4))
+ (xor(xor ( = (premier li ) 2) (= (deuxieme li) 2)) (= (troisieme li) 2))
+ (xor(xor ( = (premier li ) 1) (= (deuxieme li) 1)) (= (troisieme li) 1)))))
+
+(define jouer (lambda ()
+ (gagnant? (make-lancer (+(random 5) 1) (+(random 5) 1) (+(random 5) 1)))))
+
+
+;Exercice 12 :
+(define jeux (lambda (n)
+ (if ( < 0 n)
+ ( cons (jeux (- n 1)) (jouer))
+ #f
+ )
+ ))
+ \ No newline at end of file
diff --git a/sem_4/progaapp/TP1/fichiertd.rkt b/sem_4/progaapp/TP1/fichiertd.rkt
new file mode 100644
index 0000000..6d18283
--- /dev/null
+++ b/sem_4/progaapp/TP1/fichiertd.rkt
@@ -0,0 +1,3 @@
+#lang racket
+(define (puis2 x)(* x x))
+(define (puis4 x)(puis2 (puis2 x)))
diff --git a/sem_4/progaapp/TP1/lecomptestbon.bak b/sem_4/progaapp/TP1/lecomptestbon.bak
new file mode 100644
index 0000000..1ab23a7
--- /dev/null
+++ b/sem_4/progaapp/TP1/lecomptestbon.bak
@@ -0,0 +1,164 @@
+(define LVal '(1 2 3 4 5 6 7 8 9 10 25 50 75 100))
+(define Op '(+ * - /))
+
+(define make-cible (lambda () (+ 100 (random 900))))
+(define make-tirage (lambda ( ) (letrec ((f (lambda(x li)
+ (if (not(= 6 x))
+ (f (+ x 1) (cons (letrec ((g (lambda (n liref)
+ (if (= 0 n)
+ (car liref)
+ (g (- n 1) (cdr liref))
+ )
+ )
+ ))
+ (g (random 14) LVal))
+ li))
+ li
+ ))))
+ ( f 0 '())
+ )
+ ))
+
+(define estDans? (lambda (x li)
+ (letrec ((f (lambda ( x li)
+ (if (not(null? li))
+ (if (= (car li) x)
+ #t
+ ( f x (cdr li))
+ )
+ #f)
+ )
+ ))
+ (f x li)
+ )
+ )
+ )
+(define estValide? (lambda (a b op)
+ (if (< 0 ((eval op) a b))
+ (if (integer? ((eval op) a b))
+ #t
+ #f)
+ #f)
+ )
+ )
+(define opere (lambda (liop a b)
+ (letrec ((f (lambda (liop lires)
+ (if (not(null? liop))
+ (if (estValide? a b (car liop))
+ (cons ((eval (car liop)) a b) (f (cdr liop) lires))
+ (if (or (eqv?(car liop) (cadddr Op)) (eqv? (car liop) (caddr Op)))
+ (if ( estValide? b a (car liop))
+ (cons ((eval (car liop)) b a) (f (cdr liop) lires))
+ (f (cdr liop) lires)
+ )
+ (f (cdr liop) lires)
+ )
+ )
+ lires))))
+ (f Op '())
+ )
+ )
+ )
+(define retire_a_b ( lambda (a b li)
+ (letrec (( f (lambda (a b li)
+ (if (not(null? li))
+ (if (= (car li) a)
+ (f 0 b (cdr li))
+ (if (= (car li) b)
+ (f a 0 (cdr li))
+ (cons (car li) (f a b (cdr li)))
+ ))
+ li
+ )
+ )
+ ))
+ (f a b li)
+ )))
+
+
+(define genere_plaques (lambda ( ope li)
+ (letrec ((f (lambda(li1 lires)
+ (if (not(null? li1))
+ (begin(letrec ((g (lambda (li1 li2 lires)
+ (if (not(null? li2))
+ (begin (letrec ((h (lambda ( ope lires )
+ (if (not(null? ope))
+ (if (estValide? (car li1) (car li2) (car ope))
+ (h (cdr ope) (cons (cons ((eval (car ope)) (car li1) (car li2)) (retire_a_b (car li1)(car li2) li)) lires))
+ (if (estValide? (car li2) (car li1) (car ope))
+ (h (cdr ope) (cons (cons ((eval (car ope)) (car li2) (car li1)) (retire_a_b (car li1)(car li2) li)) lires))
+ (h (cdr ope) lires)
+ )
+ )
+ lires
+ )
+ )))
+ (set! lires (h ope lires)))
+ (g li1 (cdr li2) lires))
+ lires
+ )
+ )
+ ))
+ (set! lires (g li1 (cdr li1) lires))
+ )
+ (f (cdr li1) lires))
+ lires
+ )
+ )))
+ (f li '())
+ )
+ )
+ )
+(define cherche_dans_li ( lambda (li cible)
+ (letrec (( f (lambda (li)
+ (if (not(null? li))
+ (if (= (car li) cible)
+ #t
+ (f (cdr li)))
+ #f)
+ )))
+ (f li))
+ )
+ )
+
+
+(define ceb (lambda (ope plaques cible)
+ (letrec ((f(lambda(li old)
+ (if (null? li)
+ (and #t (display "Le compte n'est pas bon, au mieux :") (display old))
+ (if (list? (car li))
+ (begin(or(f (car li) old)(f (cdr li) old)))
+ (if (cherche_dans_li li cible)
+ (and #t (display "le compte est bon"))
+ (begin (set! old (approche li cible))
+ (if (null? (cdr li ))
+ (f (cdr li) old)
+ (f (genere_plaques ope li) old)
+ ))
+
+ )
+ )
+ )
+
+ )))
+
+ (f plaques (car plaques))
+
+ )))
+(define abso (lambda ( x)
+ (if (< x 0)
+ (- x)
+ x)))
+
+ (define approche ( lambda ( li cible)
+ (letrec ((f (lambda ( li old)
+ (if (not(null? li))
+ (if (<(abso(- cible (car li)))(abso(- cible old)))
+ (f (cdr li) (car li))
+ (f (cdr li) old)
+ )
+ old)
+ )))
+ (f li (car li)))))
+
+ \ No newline at end of file
diff --git a/sem_4/progaapp/TP1/tdp1.bak b/sem_4/progaapp/TP1/tdp1.bak
new file mode 100644
index 0000000..1e9e3cb
--- /dev/null
+++ b/sem_4/progaapp/TP1/tdp1.bak
@@ -0,0 +1,16 @@
+#lang racket
+(define x 5)
+(define (f x ) (* x x ))
+
+(define d 1)
+(define (plusd x) ( + x d))
+
+(set! d 5)
+
+(define (g x ) (+ 1 (h x)))
+(define (h x) (* x x))
+
+(define monabs ( lambda (x) (sqrt (* x x))))
+(define care-div ( lambda (x y) (if (not ( = 0 y)) (/ x y) ( display "Err div 0"))))
+(define exo9 (lambda (t) (if (and ( >= t -3) (<= t -1)) 1 (if (and (>= t 2) (<= t 4)) 2 0))))
+(define placement (lambda (x t y) (expt (+ x (* t x)) y ))) \ No newline at end of file
diff --git a/sem_4/progaapp/TP1/tortue.bak b/sem_4/progaapp/TP1/tortue.bak
new file mode 100644
index 0000000..3d35313
--- /dev/null
+++ b/sem_4/progaapp/TP1/tortue.bak
@@ -0,0 +1,5 @@
+#lang racket
+(require (lib "turtles.ss" "graphics"))
+(define carre (lambda (lgr) (begin (turtles #t) (draw lgr) (turn 90) (draw lgr) (turn 90 ) (draw lgr) (turn 90) (draw lgr))))
+(define hexagone ( lambda (lgr) (begin (turtles #t ) ( draw lgr )(turn 60) ( draw lgr )(turn 60)( draw lgr )(turn 60)( draw lgr )(turn 60)( draw lgr )(turn 60)( draw lgr )(turn 60))))
+(define figure ( lambda (n lgt) (let ( angle (/ 360 n)) (begin \ No newline at end of file
diff --git a/sem_4/progaapp/TP1/tortue.rkt b/sem_4/progaapp/TP1/tortue.rkt
new file mode 100644
index 0000000..bab2885
--- /dev/null
+++ b/sem_4/progaapp/TP1/tortue.rkt
@@ -0,0 +1,6 @@
+#lang racket
+(require (lib "turtles.ss" "graphics"))
+(define carre (lambda (lgr) (begin (turtles #t) (draw lgr) (turn 90) (draw lgr) (turn 90 ) (draw lgr) (turn 90) (draw lgr))))
+(define hexagone ( lambda (lgr) (begin (turtles #t ) ( draw lgr )(turn 60) ( draw lgr )(turn 60)( draw lgr )(turn 60)( draw lgr )(turn 60)( draw lgr )(turn 60)( draw lgr )(turn 60))))
+(define figure ( lambda (n lgt) (let (( angle (/ 360 n))) (letrec ((f (lambda(i) (if (not (= i 0)) (begin (draw lgt) (turn angle) (f (- i 1))) (turn ( / 360 (/ n 2)) ))))) (f n)
+ ))))
diff --git a/sem_4/progaapp/TP1/tp1.rkt b/sem_4/progaapp/TP1/tp1.rkt
new file mode 100644
index 0000000..bb92134
--- /dev/null
+++ b/sem_4/progaapp/TP1/tp1.rkt
@@ -0,0 +1,111 @@
+;Gaspard Coulet, 21601609 Groupe B
+
+#lang racket
+(define exo9 (lambda (t) (if (and ( >= t -3) (<= t -1)) 1 (if (and (>= t 2) (<= t 4)) 2 0))))
+
+
+(define bissextile
+ (lambda (x)
+ ( if (= (modulo x 4) 0)
+ (if (not (= ( modulo x 100) 0))
+ #t
+ (if (= ( modulo x 400) 0)
+ #t
+ #f)
+ )
+ #f)
+ )
+ )
+
+(define nb-annee-bissextile
+ (lambda (x)
+ (letrec ( (f
+ (lambda (x i)
+ (if (not (= x 1900))
+ (if (bissextile x)
+ (f (- x 1) (+ i 1))
+ (f (- x 1) i)
+ )
+ i)
+ )
+ ))
+ ( f x 0)
+ )
+ )
+ )
+
+(define nb-jours-au-1-jan
+ (lambda (x)
+ (letrec ((f
+ (lambda (x i)
+ (if (not(= x 1))
+ (if (or (= 2 x) (= x 4) (= x 6) (= x 9) (= x 11))
+ (if (= x 2)
+ (f (- x 1) ( + i 28))
+ (f (- x 1) (+ i 30))
+ )
+ (f (- x 1) (+ i 31))
+ )
+ ( + i 31)
+ )
+ )
+ ))
+ (if (= 1 x)
+ 0
+ ( f (- x 1) 0)
+ )
+ )
+ )
+ )
+
+(define nb-jours (lambda (m d y)
+ (let ((i (if (= y 1900)
+ 0
+ (+ (* (nb-annee-bissextile y) 1) (* 365 (- y 1900)))
+ )
+ ))
+ (let ((i (+ i (nb-jours-au-1-jan m))))
+ (let ((i (+ i d)))
+ (- i 1)
+ )
+ )
+ )
+ )
+ )
+
+(define jour-semaine (lambda (m d y)
+ (let ((nbjour (nb-jours m d y)))
+ (if (= (modulo nbjour 7) 0)
+ (display "Lundi")
+ (if (= (modulo nbjour 7) 1)
+ (display "Mardi")
+ (if (= (modulo nbjour 7) 2)
+ (display "Mercredi")
+ (if (= (modulo nbjour 7) 3)
+ (display "Jeudi")
+ (if (= (modulo nbjour 7) 4)
+ (display "Vendredi")
+ (if (= (modulo nbjour 7) 5)
+ (display "Samedi")
+ (if (= (modulo nbjour 7) 6)
+ (display "Dimanche")
+ (display "étrange")
+ )
+
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+
+;Question devoir TP1 :
+; Exercice 1 :
+; (map exo9 '(-5 -4 -3 -2 -1 0 1 2 3 4 5))
+; Exercice 2 :
+; (bissextile 1408)
+; (bissextile 1500)
+; (jour-semaine 1 13 2408)
diff --git a/sem_4/progaapp/TP1/tp2.rkt b/sem_4/progaapp/TP1/tp2.rkt
new file mode 100644
index 0000000..bdc8c5b
--- /dev/null
+++ b/sem_4/progaapp/TP1/tp2.rkt
@@ -0,0 +1,174 @@
+;Gaspard Coulet 21601609 Groupe B
+
+(define LVal '(1 2 3 4 5 6 7 8 9 10 25 50 75 100))
+(define Op '(+ * - /))
+
+(define make-cible (lambda () (+ 100 (random 900))))
+(define make-tirage (lambda ( ) (letrec ((f (lambda(x li)
+ (if (not(= 6 x))
+ (f (+ x 1) (cons (letrec ((g (lambda (n liref)
+ (if (= 0 n)
+ (car liref)
+ (g (- n 1) (cdr liref))
+ )
+ )
+ ))
+ (g (random 14) LVal))
+ li))
+ li
+ ))))
+ ( f 0 '())
+ )
+ ))
+
+(define estDans? (lambda (x li)
+ (letrec ((f (lambda ( x li)
+ (if (not(null? li))
+ (if (= (car li) x)
+ #t
+ ( f x (cdr li))
+ )
+ #f)
+ )
+ ))
+ (f x li)
+ )
+ )
+ )
+(define estValide? (lambda (a b op)
+ (if (< 0 ((eval op) a b))
+ (if (integer? ((eval op) a b))
+ #t
+ #f)
+ #f)
+ )
+ )
+(define opere (lambda (liop a b)
+ (letrec ((f (lambda (liop lires)
+ (if (not(null? liop))
+ (if (estValide? a b (car liop))
+ (cons ((eval (car liop)) a b) (f (cdr liop) lires))
+ (if (or (eqv?(car liop) (cadddr Op)) (eqv? (car liop) (caddr Op)))
+ (if ( estValide? b a (car liop))
+ (cons ((eval (car liop)) b a) (f (cdr liop) lires))
+ (f (cdr liop) lires)
+ )
+ (f (cdr liop) lires)
+ )
+ )
+ lires))))
+ (f Op '())
+ )
+ )
+ )
+(define retire_a_b ( lambda (a b li)
+ (letrec (( f (lambda (a b li)
+ (if (not(null? li))
+ (if (= (car li) a)
+ (f 0 b (cdr li))
+ (if (= (car li) b)
+ (f a 0 (cdr li))
+ (cons (car li) (f a b (cdr li)))
+ ))
+ li
+ )
+ )
+ ))
+ (f a b li)
+ )))
+
+
+(define genere_plaques (lambda ( ope li)
+ (letrec ((f (lambda(li1 lires)
+ (if (not(null? li1))
+ (begin(letrec ((g (lambda (li1 li2 lires)
+ (if (not(null? li2))
+ (begin (letrec ((h (lambda ( ope lires )
+ (if (not(null? ope))
+ (if (estValide? (car li1) (car li2) (car ope))
+ (h (cdr ope) (cons (cons ((eval (car ope)) (car li1) (car li2)) (retire_a_b (car li1)(car li2) li)) lires))
+ (if (estValide? (car li2) (car li1) (car ope))
+ (h (cdr ope) (cons (cons ((eval (car ope)) (car li2) (car li1)) (retire_a_b (car li1)(car li2) li)) lires))
+ (h (cdr ope) lires)
+ )
+ )
+ lires
+ )
+ )))
+ (set! lires (h ope lires)))
+ (g li1 (cdr li2) lires))
+ lires
+ )
+ )
+ ))
+ (set! lires (g li1 (cdr li1) lires))
+ )
+ (f (cdr li1) lires))
+ lires
+ )
+ )))
+ (f li '())
+ )
+ )
+ )
+(define cherche_dans_li ( lambda (li cible)
+ (letrec (( f (lambda (li)
+ (if (not(null? li))
+ (if (= (car li) cible)
+ #t
+ (f (cdr li)))
+ #f)
+ )))
+ (f li))
+ )
+ )
+
+
+(define ceb (lambda (ope plaques cible)
+ (letrec ((f(lambda(li old)
+ (if (null? li)
+ (and #t (display "Le compte n'est pas bon, au mieux :") (display old))
+ (if (list? (car li))
+ (begin(or(f (car li) old)(f (cdr li) old)))
+ (if (cherche_dans_li li cible)
+ (and #t (display "le compte est bon"))
+ (begin (set! old (approche li cible))
+ (if (null? (cdr li ))
+ (f (cdr li) old)
+ (f (genere_plaques ope li) old)
+ ))
+
+ )
+ )
+ )
+
+ )))
+
+ (f plaques (car plaques))
+
+ )))
+(define abso (lambda ( x)
+ (if (< x 0)
+ (- x)
+ x)))
+
+ (define approche ( lambda ( li cible)
+ (letrec ((f (lambda ( li old)
+ (if (not(null? li))
+ (if (<(abso(- cible (car li)))(abso(- cible old)))
+ (f (cdr li) (car li))
+ (f (cdr li) old)
+ )
+ old)
+ )))
+ (f li (car li)))))
+
+
+; Exercice 3 :
+; (make-tirage)
+; Exercice 4 :
+; (ceb Op '(9 100 75 3 8) 288)
+;
+;
+;
+; \ No newline at end of file