• Aucun résultat trouvé

Corrig´e du DS1

N/A
N/A
Protected

Academic year: 2022

Partager "Corrig´e du DS1"

Copied!
7
0
0

Texte intégral

(1)

Corrig´e du DS1 d’informatique

Corrig´ e du DS1

Cases atteintes par un cavalier en p coups

Partie A – Pr´ eliminaires

A.1 a

# l e t p r i n t b o o l = f u n c t i o n t r u e −> p r i n t c h a r ‘V‘ | −> p r i n t s t r i n g ”F ” ; ; p r i n t b o o l : b o o l −> u n i t = <fun>

b

# l e t a f f i c h e b o o l ta b = l e t l = ( v e c t l e n g t h ta b − 1 ) i n f o r i = 0 t o l do

p r i n t s t r i n g ”|” ; f o r j = 0 t o l do

p r i n t b o o l t a b . ( i ) . ( j ) ; p r i n t c h a r ‘| ‘ ; done ;

p r i n t n e w l i n e ( ) ; done ; ;

a f f i c h e b o o l : b o o l v e c t v e c t −> u n i t = <fun>

A.2

# l e t r e c f i l t r e p r e d i c a t = f u n c t i o n

| [ ] −> [ ]

| ( a : : q ) when ( p r e d i c a t a ) −> a : : f i l t r e p r e d i c a t q

| : : q −> f i l t r e p r e d i c a t q ; ;

f i l t r e : ( ’ a −> b o o l ) −> ’ a l i s t −> ’ a l i s t =<fun>

A.3

# l e t i n t e r v n i = ( 0 <= i ) && ( i <= n − 1 ) ; ; i n t e r v : i n t −> i n t −> b o o l = <fun>

# l e t s e u i l n ( i , j ) = ( i n t e r v n i ) && ( i n t e r v n j ) ; ; s e u i l : i n t −> i n t ∗ i n t −> b o o l = <fun>

# l e t f i l t r e e c h i q u i e r n = f i l t r e ( s e u i l n ) ; ;

f i l t r e e c h i q u i e r : i n t −> ( i n t ∗ i n t ) l i s t −> ( i n t ∗ i n t ) l i s t = <fun>

# l e t d e p l a c e n c a s e = f i l t r e e c h i q u i e r n ( d e p l a c e t e m p c a s e ) ; ; d e p l a c e : i n t −> i n t ∗ i n t −> ( i n t ∗ i n t ) l i s t =<fun>

Partie B – Traitement fonctionnel r´ ecursif

a

# l e t f u s i o n s i m p l e e1 e2 ( i , j ) = ( e1 ( i , j ) ) o r ( e2 ( i , j ) ) ; ;

f u s i o n s i m p l e : ( ’ a ∗ ’ b −> b o o l ) −> ( ’ a ∗ ’ b −> b o o l ) −> ’ a ∗ ’ b −> b o o l =

<fun>

b

(2)

(∗ V e r s i o n non r ´e c u r s i v e t e r m i n a l e ∗)

# l e t r e c f u s i o n n o n t e r m = f u n c t i o n

| [ ] −> f a i l w i t h ”Pas de f u s i o n p o s s i b l e ”

| [ e ] −> e

| e : : q −> f u s i o n s i m p l e e ( f u s i o n n o n t e r m q ) ; ;

f u s i o n n o n t e r m : ( ’ a ∗ ’ b −> b o o l ) l i s t −> ’ a ∗ ’ b −> b o o l = <fun>

(∗ V e r s i o n r ´e c u r s i v e t e r m i n a l e ∗)

# l e t f u s i o n = l e t r e c f u s i o n t e r m a c c u = f u n c t i o n

| [ ] −> a c c u

| e : : q −> f u s i o n t e r m ( f u s i o n s i m p l e a c c u e ) q i n

f u s i o n t e r m ( f u n c t i o n ( i , j ) −> f a l s e ) ; ;

f u s i o n : ( ’ a ∗ ’ b −> b o o l ) l i s t −> ’ a ∗ ’ b −> b o o l = <fun>

B.1

# l e t e t e n d e c a s e = e c a s e o r n o t ( f i l t r e e ) ( d e p l a c e n d e c l a r e c a s e ) = [ ] ; ; e t e n d : ( i n t ∗ i n t −> b o o l ) −> i n t ∗ i n t −> b o o l = <fun>

B.2

(∗ V e r s i o n a v e c r ´e c u r s i v i t ´e c r o i s ´e e ∗)

# l e t r e c l i s t e a c c e s p = f u n c t i o n

| [ ] −> [ ]

| a : : q −> ( a c c e s s i b l e s 1 a p ) : : ( l i s t e a c c e s p q ) and

a c c e s s i b l e s 1 ( i 0 , j 0 ) = f u n c t i o n

| 0 −> ( f u n c t i o n ( i , j ) −> i = i 0 && j = j 0 )

| p −> f u s i o n ( l i s t e a c c e s ( p − 1 ) ( d e p l a c e n d e c l a r e ( i 0 , j 0 ) ) ) ; ; l i s t e a c c e s : i n t −> ( i n t ∗ i n t ) l i s t −> ( i n t ∗ i n t −> b o o l ) l i s t = <fun>

a c c e s s i b l e s 1 : i n t ∗ i n t −> i n t −> i n t ∗ i n t −> b o o l = <fun>

(∗ V e r s i o n r ´e c u r s i v e t e r m i n a l e ∗)

# l e t r e c a c c e s s i b l e s r e c e c h i q u i e r ( i 0 , j 0 ) = f u n c t i o n

| 0 −> f u s i o n s i m p l e e c h i q u i e r ( f u n c t i o n ( i , j ) −> i = i 0 && j = j 0 )

| p −> a c c e s s i b l e s r e c ( e t e n d e c h i q u i e r ) ( i 0 , j 0 ) ( p − 1 ) ; ; a c c e s s i b l e s r e c :

( i n t ∗ i n t −> b o o l ) −> i n t ∗ i n t −> i n t −> i n t ∗ i n t −> b o o l = <fun>

# l e t a c c e s s i b l e s 1 b i s c a s e = a c c e s s i b l e s r e c ( f u n c t i o n x −> x = c a s e ) c a s e ; ; a c c e s s i b l e s 1 b i s : i n t ∗ i n t −> i n t −> i n t ∗ i n t −> b o o l = <fun>

Partie C – Traitement imp´ eratif et r´ ecursif

C.1

# l e t i n i t n = make matrix n n f a l s e ; ; i n i t : i n t −> b o o l v e c t v e c t = <fun>

C.2

# l e t v a l e u r c o n f i g c a s e = c o n f i g . ( f s t c a s e ) . ( snd c a s e ) ; ; v a l e u r : ’ a v e c t v e c t −> i n t ∗ i n t −> ’ a = <fun>

(3)

(∗ ou ∗)

# l e t v a l e u r b i s c o n f i g ( i , j ) = c o n f i g . ( i ) . ( j ) ; ; v a l e u r b i s : ’ a v e c t v e c t −> i n t ∗ i n t −> ’ a =<fun>

C.3

# l e t t r a n s m i s c a s e c o n f i g = l e t n = v e c t l e n g t h c o n f i g i n n o t ( f i l t r e ( v a l e u r c o n f i g ) ( d e p l a c e n c a s e ) = [ ] ) ; ; t r a n s m i s : i n t ∗ i n t −> b o o l v e c t v e c t −> b o o l = <fun>

C.4

# l e t a t t e i n t e s c o n f i g = l e t n = v e c t l e n g t h c o n f i g i n l e t temp = i n i t n i n f o r i = 0 t o ( n − 1 ) do

f o r j = 0 t o ( n − 1 ) do

temp . ( i ) . ( j ) <− c o n f i g . ( i ) . ( j ) o r t r a n s m i s ( i , j ) c o n f i g done

done ; temp ; ;

a t t e i n t e s : b o o l v e c t v e c t −> b o o l v e c t v e c t = <fun>

C.5

# l e t r e c a c c e s s i b l e s e c h i q u i e r c a s e = f u n c t i o n

| 0 −> e c h i q u i e r . ( f s t c a s e ) . ( snd c a s e ) <− t r u e ; e c h i q u i e r

| p −> a t t e i n t e s ( a c c e s s i b l e s e c h i q u i e r c a s e ( p − 1 ) ) ; ;

a c c e s s i b l e s : b o o l v e c t v e c t −> i n t ∗ i n t −> i n t −> b o o l v e c t v e c t = <fun>

# l e t a c c e s s i b l e s 2 n = a c c e s s i b l e s ( i n i t n ) ; ;

a c c e s s i b l e s 2 : i n t −> i n t ∗ i n t −> i n t −> b o o l v e c t v e c t = <fun>

Partie D – Traitement purement imp´ eratif

D.1

# l e t e c h i q u i e r r e m p l i e c h i q u i e r =

l e t n = v e c t l e n g t h e c h i q u i e r i n

l e t temp = make matrix n n t r u e i n e c h i q u i e r = temp ; ;

e c h i q u i e r r e m p l i : b o o l v e c t v e c t −> b o o l = <fun>

(∗ Autre v e r s i o n , b i e n p l u s l o u r d e ∗)

# l e t e c h i q u i e r r e m p l i l o u r d e c h i q u i e r =

l e t temp = r e f t r u e and n = v e c t l e n g t h e c h i q u i e r i n f o r i = 0 t o ( n − 1 ) do

f o r j = 0 t o ( n − 1 ) do

temp := ! temp && e c h i q u i e r . ( i ) . ( j ) done

done ;

! temp ; ;

e c h i q u i e r r e m p l i l o u r d : b o o l v e c t v e c t −> b o o l = <fun>

D.2

# l e t a c c e s s i b l e s 3 n c a s e p =

l e t temp = r e f ( i n i t n ) and i = r e f 0 i n

! temp . ( f s t c a s e ) . ( snd c a s e ) <− t r u e ; w h i l e

(4)

( n o t ( e c h i q u i e r r e m p l i ! temp ) ) && ! i < p do

temp := a t t e i n t e s ! temp ; i := ! i + 1 done ;

! temp ; ;

a c c e s s i b l e s 3 : i n t −> i n t ∗ i n t −> i n t −> b o o l v e c t v e c t = <fun>

Partie E – Probl` emes connexes

E.1

# l e t pcoups n c a s e p = l e t temp = i n i t n i n i f p = 0 t h e n a c c e s s i b l e s 3 n c a s e p e l s e

b e g i n

f o r i = 0 t o ( n − 1 ) do

f o r j = 0 t o ( n − 1 ) do

temp . ( i ) . ( j ) <− ( a c c e s s i b l e s 3 n c a s e p ) . ( i ) . ( j )

&& no t ( a c c e s s i b l e s 3 n c a s e ( p − 1 ) ) . ( i ) . ( j ) ; done

done ; temp ; end ; ;

pcoups : i n t −> i n t ∗ i n t −> i n t −> b o o l v e c t v e c t = <fun>

E.2

# l e t c o u p s s u i v a n t s c o n f i g = l e t n = v e c t l e n g t h c o n f i g i n l e t temp = i n i t n i n f o r i = 0 t o ( n − 1 ) do f o r j = 0 t o ( n − 1 ) do

temp . ( i ) . ( j ) <− t r a n s m i s ( i , j ) c o n f i g done done ; temp ; ; c o u p s s u i v a n t s : b o o l v e c t v e c t −> b o o l v e c t v e c t = <fun>

# l e t r e c p o s i t i o n s p o s s i b l e s e c h i q u i e r c a s e = f u n c t i o n

| 0 −> e c h i q u i e r . ( f s t c a s e ) . ( snd c a s e ) <− t r u e ; e c h i q u i e r

| p −> c o u p s s u i v a n t s ( p o s i t i o n s p o s s i b l e s e c h i q u i e r c a s e ( p − 1 ) ) ; ; p o s i t i o n s p o s s i b l e s : b o o l v e c t v e c t −> i n t ∗ i n t −> i n t −> b o o l v e c t v e c t =

<fun>

# l e t a p r e s p c o u p s n = p o s i t i o n s p o s s i b l e s ( i n i t n ) ; ;

r e s u l t p o s : i n t −> i n t ∗ i n t −> i n t −> b o o l v e c t v e c t = <fun>

(5)

(∗ R ´e s u l t a t s ∗)

(∗ F o n c t i o n de c o n v e r s i o n de l a p r e m i`e r e v e r s l a s e c o n d e m o d ´e l i s a t i o n ∗)

# l e t c o n v e r t e c h i q u i e r f o n c t i o n n e l n = l e t temp = make matrix n n f a l s e i n f o r i = 0 t o ( n − 1 ) do

f o r j = 0 t o ( n − 1 ) do

temp . ( i ) . ( j ) <− e c h i q u i e r f o n c t i o n n e l ( i , j ) done

done ; temp ; ;

c o n v e r t : ( i n t ∗ i n t −> b o o l ) −> i n t −> b o o l v e c t v e c t = <fun>

(∗ Programme pour comparer l e temps d ’ e x ´e c u t i o n d e s a l g o r i t h m e s ∗)

# l e t a l g o t e m p s a l g o n c a s e p = l e t temp = s y s t i m e ( ) i n a f f i c h e b o o l ( a l g o n c a s e p ) ;

s y s t i m e ( ) −. temp ; ;

a l g o t e m p s : ( ’ a −> ’ b −> ’ c −> b o o l v e c t v e c t ) −> ’ a −> ’ b −> ’ c −> f l o a t =

<fun>

(∗ T e s t s c o r r e s p o n d a n t aux d i f f ´e r e n t e s r ´e p o n s e s ∗)

# l e t t e s t 1 = a l g o t e m p s ( f u n n c a s e p −> c o n v e r t ( a c c e s s i b l e s 1 c a s e p ) n ) ; ; t e s t 1 : i n t −> i n t ∗ i n t −> i n t −> f l o a t = <fun>

# l e t t e s t 1 b i s = a l g o t e m p s ( f u n n c a s e p −> c o n v e r t ( a c c e s s i b l e s 1 b i s c a s e p ) n ) ; ; t e s t 1 b i s : i n t −> i n t ∗ i n t −> i n t −> f l o a t =<fun>

# l e t t e s t 2 = a l g o t e m p s a c c e s s i b l e s 2 ; ;

t e s t 2 : i n t −> i n t ∗ i n t −> i n t −> f l o a t = <fun>

# l e t t e s t 3 = a l g o t e m p s a c c e s s i b l e s 3 ; ;

t e s t 3 : i n t −> i n t ∗ i n t −> i n t −> f l o a t = <fun>

(∗ Donn´ees g l o b a l e s ∗)

# l e t c o u p s = 4 and pos = ( 7 , 7 ) ; ; c o u p s : i n t = 4

pos : i n t ∗ i n t = 7 , 7

(∗ C o n f r o n t a t i o n d e s a l g o r i t h m e s p r o p o s ´e s ∗)

# t e s t 1 n g l o b a l pos c o u p s ; ;

|F|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|V|V|V|V|V|V|V|V|

|V|F|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

− : f l o a t = 0 . 0 3 2

(6)

# t e s t 1 b i s n g l o b a l pos c o u p s ; ;

|F|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|V|V|V|V|V|V|V|V|

|V|F|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

− : f l o a t = 0 . 1 2 5

# t e s t 2 n g l o b a l pos c o u p s ; ;

|F|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|V|V|V|V|V|V|V|V|

|V|F|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

− : f l o a t = 0 . 0

# t e s t 3 n g l o b a l pos c o u p s ; ;

|F|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|V|V|V|V|V|V|V|V|

|V|F|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

|V|V|V|V|V|V|V|V|V|V|V|V|

|F|V|V|V|V|V|V|V|V|V|V|V|

− : f l o a t = 0 . 0 (∗ T e s t de pcoups ∗)

# f o r i = 0 t o 4 do a f f i c h e b o o l ( pcoups 8 ( 7 , 7 ) i ) ; p r i n t n e w l i n e ( ) done ; ;

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|V|

(7)

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|V|F|

|F|F|F|F|F|V|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|F|V|F|V|

|F|F|F|F|V|F|V|F|

|F|F|F|V|F|F|F|V|

|F|F|F|F|V|F|F|F|

|F|F|F|V|F|V|F|F|

|F|F|F|F|F|F|F|F|

|F|F|F|F|V|F|V|F|

|F|F|F|V|F|V|F|V|

|F|F|V|F|V|F|V|F|

|F|V|F|V|F|V|F|V|

|F|F|V|F|V|F|F|F|

|F|V|F|V|F|F|F|V|

|F|F|V|F|V|F|V|F|

|F|F|V|F|V|F|V|F|

|F|V|F|V|F|V|F|V|

|V|F|V|F|V|F|V|F|

|F|V|F|V|F|F|F|F|

|V|F|V|F|F|F|F|F|

|F|V|F|F|F|V|F|F|

|V|F|V|F|F|F|V|F|

|F|V|F|F|F|F|F|F|

− : u n i t = ( )

(∗ T e s t de a p r e s p c o u p s ∗)

# a f f i c h e b o o l ( a p r e s p c o u p s 12 ( 7 , 7 ) 9 ) ; ;

|F|V|F|V|F|V|F|V|F|V|F|V|

|V|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|F|V|F|V|F|V|F|V|

|V|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|F|V|F|V|F|V|F|V|

|V|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|F|V|F|V|F|V|F|V|

|V|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|F|V|F|V|F|V|F|V|

|V|F|V|F|V|F|V|F|V|F|V|F|

|F|V|F|V|F|V|F|V|F|V|F|V|

|V|F|V|F|V|F|V|F|V|F|V|F|

− : u n i t = ( )

Références

Documents relatifs

T´ el´ echarg´ e depuis http://www.math.u-psud.fr/ e fischler/enseignement.html. S1 PCST, Option Math

Cette valeur peut ˆ etre devin´ ee en partant, au brouillon, de la relation y = x−1 x−2 dont on souhaite qu’elle soit v´ erifi´ ee, et en exprimant x en fonction de y grˆ ace `

T´ el´ echarg´ e depuis http://www.math.u-psud.fr/ e fischler/enseignement.html 1. S1 PCST, Option Math

T´ el´ echarg´ e depuis http://www.math.u-psud.fr/ e fischler/enseignement.html 1. S1 PCST, Option Math

(b) Par d´ efinition, la borne sup´ erieure de E (si elle existe) est le plus petit ´ el´ ement de l’en- semble des majorants de E.. D´ emontrons maintenant l’inclusion

On peut aussi ´ ecrire les solutions sous la forme (x, −x) avec x ∈ C quelconque, ce qui donne une autre base du sous-espace propre : le vecteur (1, −1).. (d) La matrice A

[r]

[r]