Informatique		DEUG A1		Partiel		9/4/96

Durée 2 heures. Aucun document. Les questions sont indépendantes.
A la fin de l'épreuve, déposer votre copie dans le paquet de votre groupe de td.

Question 1
Quel est le nombre d’éléments des listes suivantes:
a- (a (b c))
b- (a () b)
c- (1 (2 (3 (4))))

Question 2
Evaluer:
a- (if #t (+ 1 2) (+ 2 3))
b- (car '((a b) c))
c- (let ((x (* 2 3))) (- x 3))
d- (if (null? '(1 2)) 1 2)
e- (let ((x +) (y 2)) (x y y))

Question 3
On considère la suite définie par un = un-12 – un-1 pour tout entier n≥1, et par u0 = 2.001. Faire une fonction (u n) calculant un. On demande une version optimisée.

Question 4
Faire une fonction (position x l) donnant le nombre d’éléments qui précèdent x dans la liste l  si x appartient à l, et #f si x n’appartient pas à l. Exemple:
(position 'a '(c b d a c a d)) --> 3

Question 5
Faire une fonction (tous-egaux? n) où n est un entier positif, et qui donne #t si n n’a qu’un chiffre ou si tous les chiffres de n sont égaux, et #f sinon. Exemple: 
(tous-egaux? 444) --> #t
On rappelle que le reste et le quotient de la division euclidienne de a par b sont donnés par (remainder a b) et (quotient a b).

Question 6
On considère la fonction suivante:
(define (super-truc x l f)
  (cond ((null? l) ())
            (else (f x (car l) (super-truc x (cdr l) f)))))
a- Après avoir défini la fonction:
(define (f1 x y l) (if (equal? x y) l (cons y l)))
évaluer:
(super-truc 'a '(a b a c d) f1)
b- Faire une fonction f2 telle que:
(super-truc 'a '(a b a c d) f2) --> (a a b a a c d)

PARTIEL INFORMATIQUE DEUG A1  FORMULAIRE DE REPONSE	9/4/96

NOM :
Prénom :
Numéro de groupe de  td :					Numéro d'appel :

1a    2						1b   3
1c    2						

2a    3						2b    (a b)
2c    3						2d    2
2e    4

3  (define (u n)
.     (cond ((= n 0) 2.001)
.               (else (let ((x (u (- n 1))))
.                           (- (* x x) x)))))
.
.
4 (define (position x l)
.     (cond ((null? l) #f)
.               ((equal? x (car l)) 0)
.               (else (+ 1 (position x (cdr l))))))
.
.
5  (define (tous-egaux? n)
.     (cond ((< n 10) #t)
.               (else (let ((q (quotient n 10)))
.                           (and (tous-egaux? q)
.                                   (= (remainder q 10) (remainder n 10)))))))
.
.
6a  (b c d)

6b  (define (f2 x y l) (if (equal? x y) (cons x (cons x l)) (cons y l)))

PARTIEL INFORMATIQUE DEUG A1  FORMULAIRE DE REPONSE	9/4/96

NOM :
Prénom :
Numéro de groupe de  td :					Numéro d'appel :

1a    							1b   
1c    						

2a     							2b    
2c    							2d    
2e    

3  (define (u n)
.     
.              
.                           
.
.
4 (define (position x l)
.    
.      
.        
.
.
5  (define (tous-egaux? n)
.    
.              
.             
.                
.
.
6a  

6b  (define (f2 x y l)