[PDF] [PDF] TP 5 - Corrigé partie 1 Jeu de la vie - Marc Pegon

Jeu de la vie 2015-2016 TP 5 - Corrigé partie 1 Jeu de la vie Les solutions données dans ce corrigé ne sont bien sûr que des propositions, et sont sans nul  



Previous PDF Next PDF





[PDF] TP 5 - Corrigé partie 1 Jeu de la vie - Marc Pegon

Jeu de la vie 2015-2016 TP 5 - Corrigé partie 1 Jeu de la vie Les solutions données dans ce corrigé ne sont bien sûr que des propositions, et sont sans nul  



[PDF] TP ENS 2003: Jeu de la vie – Correction - Inria Bordeaux Sud-Ouest

TP ENS 2003: Jeu de la vie – Correction Damien Martin-Guillerez Lycée Chateaubriand Décembre 2006 Si vous avez des questions, n'hésitez pas `a 



[PDF] Jeu de la vie

Corrigé informatique commune Jeu de la vie 1 Génération de la configuration initiale Question 1 Le script ci-dessous calcule dans un tableau les 10 000 



[PDF] Le jeu de la vie - Lycée Edmond Perrier

Le jeu de la vie : - Un jeu qui simule l'évolution d'une population de cellules, - Une grille où chaque case contient ou non une cellule, - Il répond à trois règles :  



[PDF] TD : Le jeu de la vie

Créez une fonction jeu_de_la_vie, de type bool array array -> unit telle que jeu_de_la_vie g met à jour la grille g selon les règles du jeu de la vie



[PDF] Olympiades de Mathématiques, Grenoble 2017 - Freemathsfr

SUJET + CORRIGÉ Olympiades Les candidats des séries L, ES et STMG traitent les exercices numéros 3 (Jeu de la Vie) Le mathématcien américain John Conway a imaginé vers 1970 un jeu, appelé "Jeu de la vie" iui met en scène



[PDF] Devoir 1 - Programmation PVM Programmation du jeu de la vie

Le jeu de la vie est un automate cellulaire sur une grille 2D en principe infinie Chaque point de la ne fonctionne pas, le devoir ne sera pas corrigé A rendre



[PDF] Chapitre 3 - NTN SNR

Durée de vie nominale corrigée 68 Influence du jeu de fonctionnement 81 vie atteinte par 90 des roulements travaillant sous charge dynamique



[PDF] Créer un jeu de Pong sur Scratch

Les raquettes Une partie débutera en cliquant sur le drapeau vert Le script pour les raquettes est simple ; il suffit de les mettre en position initiale, puis de les 



[PDF] Jeu de laçage

[PDF] JEU DE LANGAGE : DES FLEURS POUR LES OURS ( Voir

[PDF] Jeu de lecture en 54 cartes

[PDF] Jeu de Ludo

[PDF] JEU DE L`ELASTIQUE Jeu 1 : Partie Chinoise

[PDF] Jeu de l`enveloppe - Union Rhône

[PDF] Jeu de l`escargot qui lit

[PDF] Jeu de l`haltéro n°1 Essayez de compléter la grille de sorte que

[PDF] JEU DE L`OIE - Des Jeux Et Des Puzzles

[PDF] JEU DE L`OIE - Viens, lève-toi

[PDF] jeu de l`oie Égypte Antique - Anciens Et Réunions

[PDF] Jeu de l`oie et groupes thérapeutiques avec des personnes alcoolo

[PDF] Jeu de l`oie géant

[PDF] Jeu de l`oie geant - Association Equi`Max

[PDF] Jeu de l`oie géant : règles du jeu - Anciens Et Réunions

TP 5 - Corrigé partie 1 Jeu de la vie 2015-2016

TP 5 - Corrigé partie 1

Jeu de la vie

Les solutions données dans ce corrigé ne sont bien sûr que des propositions, et sont sans nul doute perfectibles. Parfois on proposera même plusieurs solutions en discutant de leur pertinence.

1 Introduction

Q1Après application des règles on obtient :2 Implémentation Q2Dans le cas oùNest pair, il faut faire un choix sur le centre de la grille : contentons- nous de prendre la partie entière de N2 , qui peut être obtenue en Python parN//2. Il peut être judicieux de commencer par l"affectationc = N//2, d"une part par soucis de lisibilité, d"autre part pour s"assurer que l"interpréteur Python ne calcule bien qu"une fois cette valeur.

Plutôt que d"écrire7instructions très proches, on pourrait être tenté de factoriser (par

une boucle, ou en sélectionnant plusieurs cellules d"un coup), mais ici c"est sans doute se donner du mal pour rien. L"important est de procéderméthodiquement, pour n"oublier aucune cellule et éviter d"initialiser deux fois la même : par exemple en procédant colonne par colonne de gauche à droite et de haut en bas.Spéciale BCPST 2 1 Marc Pegon TP 5 - Corrigé partie 1 Jeu de la vie 2015-2016

Listing 1 - init_jeu_u (1ere version)

1definit_jeu_u(N) :2grille = np.zeros((N, N), dtype=float)3c = N//24

5grille[c-1,c-1] = 16grille[c-1,c] = 17grille[c-1,c+1] = 18grille[c,c+1] = 19grille[c+1,c-1] = 110grille[c+1,c] = 111grille[c+1,c+1] = 112

13returngrilleListing 2 - init_jeu_u (2e version)

1definit_jeu_u(N) :2grille = np.zeros((N, N), dtype=float)3c = N//24

5# On selectionne 3 cellules sur la meme colonne6grille[c-1,c-1:c+2] = 17grille[c,c+1] = 18grille[c+1,c-1:c+2] = 19

10returngrilleListing 3 - init_jeu_u (3e version, avec une boucle)

1definit_jeu_u(N) :2grille = np.zeros((N, N), dtype=float)3c = N//24

5# On cree une liste d"abscisses et d"ordonnees pourparcourir les points

6# (-1,-1), (-1,0), (-1,1), (0,1), (1,-1), (1,0), (1,1)7lX = [-1, -1, -1, 0, 1, 1, 1]8lY = [-1, 0, 1, 1, -1, 0, 1]9

10# zip permet de parcourir simultanement les listes lX et lY11for(x,y)in zip(lX, lY):12grille[c+x, c+y] = 113

14returngrilleSpéciale BCPST 2 2 Marc Pegon

TP 5 - Corrigé partie 1 Jeu de la vie 2015-2016

Q3Pas de difficulté : on parcourt la grille et on crée la liste des abscisses et des ordonnées

des points à tracer. On pensera à effacer la figure courante avant d"afficher les points.

Listing 4 - afficher_jeu1defafficher_jeu(grille):2X = []3Y = []4foriin range(1,grille.shape[0]-1):5forjin range(1,grille.shape[1]-1):6if(grille[i,j] != 0):7X.append(i)8Y.append(j)9plt.clf()10plt.axis([0, grille.shape[1], 0, grille.shape[0]])11plt.plot(X, Y, "ks")Q4Ici aussi on peut être tenté d"écrire plutôt une boucle mais au final il est sans doute

plus sage et rapide d"écrire chaque voisine à la main. On proposera néanmoins les deux versions. Il est important de comprendre pourquoi le fait de supposer que(i,j)ne désigne pas une cellule du bord simplifie grandement l"écriture de cette fonction. En effet si par exemple i=N-1il faudrait faire attention à ne pas tester les voisines de droite sous peine de " sortir »du tableau! De même pour les bords gauche, haut et bas.

Listing 5 - compter_voisins (1ere version, en une ligne)1defcompter_voisins(grille, i, j):2return(grille[i-1,j-1] + grille[i-1, j] + grille[i-1,j+1] +grille[i,j-1] + grille[i,j+1] + grille[i+1,j-1] + grille

[i+1, j] + grille[i+1,j+1]) Listing 6 - compter_voisins (2e version, avec une boucle)

1defcompter_voisins(grille, i, j):2# on cree une liste d"abscisses et d"ordonnees pourparcourir les cellules voisines

3lX = [-1, -1, -1, 0, 0, 1, 1, 1]4lY = [-1, 0, 1, -1, 1, -1, 0, 1]5

6s = 07for(x,y)in zip(lX, lY):8s += grille[i+x,j+y]9returnsSpéciale BCPST 2 3 Marc Pegon

TP 5 - Corrigé partie 1 Jeu de la vie 2015-2016 Q5On demande que la fonction modifie la grille passée en argument et ne retourne rien. On voit qu"on a besoin d"effectuer une copie de la grille avant toute chose : l"état d"une

cellule de générationN+1dépend de l"état de ses voisines à la générationN, donc il faut

garder une copie de la configurationNinchangée! Faire attention à ne parcourir que l"intérieur de la grille, pour ne pas appeler la fonction compter_voisinssur les bords. Listing 7 - iterer_jeu1defiterer_jeu(grille):2precG = grille.copy()3

4foriin range(1,grille.shape[0]-1):5forjin range(1,grille.shape[1]-1):6c = compter_voisins(precG, i, j)7if((grille[i,j] == 1andc == 2)orc == 3):8grille[i,j] = 19else:10grille[i,j] = 0Q6Pas de difficulté ici.

Listing 8 - iterer_jeu modifiée1defiterer_jeu(grille, nb_iter, afficher = False):2forkin range(nb_iter):3precG = grille.copy()4

5foriin range(1,grille.shape[0]-1):6forjin range(1,grille.shape[1]-1):7c = compter_voisins(precG, i, j)8if((grille[i,j] == 1andc == 2)orc == 3):9grille[i,j] = 110else:11grille[i,j] = 012if(afficher):13afficher_jeu(grille)14plt.title("${:3d}$".format(k))15plt.pause(10**-15)Spéciale BCPST 2 4 Marc Pegon

quotesdbs_dbs12.pdfusesText_18