1 TD 5 : Carré magique minuté



Documents pareils
TP 1. Prise en main du langage Python

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Définitions. Numéro à préciser. (Durée : )

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1 Recherche en table par balayage

TD3: tableaux avancées, première classe et chaînes

Représentation d un entier en base b

STAGE IREM 0- Premiers pas en Python

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Initiation à la programmation en Python

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

DM 1 : Montre Autoquartz ETA

Résolution de systèmes linéaires par des méthodes directes

Algorithmes récursifs

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Python - introduction à la programmation et calcul scientifique

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Introduction à MATLAB R

Licence Sciences et Technologies Examen janvier 2010

Architecture des Systèmes d Information Architecture des Systèmes d Information

1. Structure d'un programme FORTRAN 95

Objets et Programmation. origine des langages orientés-objet

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

TP : Gestion d une image au format PGM

Solutions du chapitre 4

Le chiffre est le signe, le nombre est la valeur.

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Bases Java - Eclipse / Netbeans

Cours d initiation à la programmation en C++ Johann Cuenin

Intégration et probabilités TD1 Espaces mesurés Corrigé

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

OCL - Object Constraint Language

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Algorithmique I. Algorithmique I p.1/??

GUIDE D UTILISATION DU BACKOFFICE

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Problèmes liés à la concurrence

Suites numériques 3. 1 Convergence et limite d une suite

Plan du cours Cours théoriques. 29 septembre 2014

Introduction à l algorithmique et à la programmation (Info 2)

Programmation Objet - Cours II

UML et les Bases de Données

Analyse de la vidéo. Chapitre La modélisation pour le suivi d objet. 10 mars Chapitre La modélisation d objet 1 / 57

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Découverte de Python

COURS 470 Série 04. Comptabilité Générale

I00 Éléments d architecture

La classification automatique de données quantitatives

Introduction à l informatique en BCPST

POKER ET PROBABILITÉ

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Chap III : Les tableaux

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Algorithmique et programmation : les bases (VBA) Corrigé

td3a correction session7az

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Algorithme. Table des matières

Intégration et probabilités TD1 Espaces mesurés

Formats d images. 1 Introduction

Les bases du langage Python

Présentation du langage et premières fonctions

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Qu est-ce qu une probabilité?

TD : Codage des images

Rappels sur les suites - Algorithme

Algorithmes de recherche

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Le langage SQL Rappels

Algorithmique et Programmation, IMA

La mémoire. Un ordinateur. L'octet. Le bit

Quelques algorithmes simples dont l analyse n est pas si simple

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Cours 1 : La compilation

MAT2027 Activités sur Geogebra

Perl Orienté Objet BioPerl There is more than one way to do it

Langage Java. Classe de première SI

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB


Feuille TD n 1 Exercices d algorithmique éléments de correction

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Exo7. Probabilité conditionnelle. Exercices : Martine Quinio

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

2013 Pearson France Photoshop Elements 12 pour les photographes du numérique Loïc Olive

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

AWS avancé. Surveiller votre utilisation d EC2

Qu est-ce que le relevé de compte?

Initiation à l algorithmique

Raisonnement par récurrence Suites numériques

Programmation linéaire

MIS 102 Initiation à l Informatique

Corrigés des premiers exercices sur les classes

D UN BON REFERENCEMENT

Transcription:

1 TD 5 : Carré magique minuté (correction page??) Abordé lors de cette séance programmation algorithme classe méthode de construction d un carré magique Un carré magique est un carré 3x3 dont chaque case contient un nombre entier et pour lequel les sommes sur chacune des lignes, chacune des colonnes, chacune des diagonales sont égales, soit huit sommes égales. Le plus simple des carrés magiques est celui dont tous les chiffres sont égaux même si un véritable carré magique contient des nombres a priori tous différents 1. 2 7 6 9 5 1 4 3 8 L autre objectif de ce TD est de comprendre ce que sont les classes 2 au travers de l exemple des carrés magiques. Le concept de classe est en pratique un moyen de créer ses propres types. Il existe des types prédéfinis en Python tels que les listes, les dictionnaires, les entiers Par défaut, il n existe pas de type matrice ni de type carré magique et mais les classes permettent de créer facilement ces types qui ne font pas partie du langage. Première demi-heure : constructeur. Une classe se crée invariablement de la même manière avec le mot-clé class et en ajoutant ce qu on appelle un constructeur : c est une fonction attachée à la classe et qui crée la classe. def init (self, ) : Dans le cas d un carré magique cela pourrait donner : Chaque fois que l on écrit self. < identifiant >, c est une façon d attacher une variable à la classe. Les lignes précédentes définissent une classe, les lignes suivantes définissent une variable de type CarreMagique. On utilise aussi le terme d instance. c = CarreMagique ( 1,2,3, 4,5,6, 7,8,9 ) 1. http://fr.wikipedia.org/wiki/carr%c3%a9_magique_(math%c3%a9matiques) 2. http://fr.wikipedia.org/wiki/programmation_orient%c3%a9e_objet 1

Pour afficher la variable ou membre carre de la classe CarreMagique, on écrit :.carre 1) Modifier la classe de telle sorte que le constructeur accepte une liste plutôt que neuf paramètres. On souhaite, plutôt que de rentrer neuf paramètres à la suite, pouvoir les définir dans une liste. On souhaite par exemple pouvoir écrire cela : l = range (1,10) c = CarreMagique ( l ) 2) Qu affiche le programme suivant : Et celui-là : def str (self) : return "carre magique : " + str (self.carre) Comment modifier le programme pour que l instruction affiche le carré sur plusieurs lignes? Une indication avant de commencer : s = "un deux" print s s = "un \n deux" # ajout du caractère \n print s Seconde demi-heure : méthodes. Une classe inclut des variables ou membres, des fonctions ou méthodes. Ces fonctions ont toutes en commun de s appliquer à la classe. Le constructeur est une méthode. L exemple suivant reprend la classe CarreMagique et ajouter une méthode qui compte la somme des nombres sur une ligne : 2

def str (self) : return "carre magique : " + str (self.carre) def somme_ligne (self, i) : return sum ( self.carre [i] ) # ajout # ajout.somme_ligne (0) # somme des nombres sur la première ligne 3) Ajouter une méthode qui fait la somme des nombres sur une colonne. 4) Ajouter une méthode qui fait la somme des nombres sur une diagonale. 5) Ajouter une méthode qui détermine si un carré est magique ou non en complétant la méthode suivante : def carre_est_magique (self) : li = [ self.somme_ligne (i) for i in xrange (0,3) ] lj = [ self.somme_colonne (j) for j in xrange (0,3) ] diag = [ self.somme_diagonal (k) for k in xrange (0,2) ] tout = li + lj + diag tout.sort () return.. Troisième demi-heure : le damier crénelé. Tout d abord une astuce. Il n existe pas d élément d indice (1, 1) dans une matrice mais cela est tout-à-fait possible avec un dictionnaire : d = {} d [ 1,-1 ] = 1 Seconde astuce, l opérateur modulo ou % : for i in xrange (0,9) : print i % 3 # affiche 0,1,2, 0,1,2, 0,1,2 On souhaite implémenter la méthode du damier crénelé 3. Les illustrations suivantes sont extraites de Wikipédia : 3. http://fr.wikipedia.org/wiki/carr%c3%a9_magique_(math%c3%a9matiques)#m.c3.a9thode_du_damier_cr. C3.A9nel.C3.A9 3

Premières étapes de construction d un carré magique d ordre 5. Chaque diagonale allant de gauche à droite comporte un entier unique en ordre croissant. Ensuite, le contour du carré magique final est esquissé. Dernières étapes de construction d un carré magique d ordre 5. Chaque case qui se trouve en-dehors du contour est "glissé" de 5 places en direction du centre. Une fois les déplacements effectués, le carré magique final est complet. 6) Ecrire une méthode de la classe CarreMagique qui positionne les nombres de la première étape du damier crénelé dans un dictionnaire : def etape_damier_1 (self, dimension) : d = { } return d Quatrième demi-heure : le damier crénelé, seconde partie. 7) Ecrire une méthode de la classe CarreMagique qui implémente la seconde étape du damier crénelé. 4

def damier_crenele (self, dimension) : d = self.etape_damier_1 ( dimension ) self.carre = [ [ 0 for i in xrange (0, ) ] for j in xrange (0, ) ] c = CarreMagique ([]) c.damier_crenele ().carre_est_magique () Si votre algorithme est correct, la dernière ligne devrait afficher True. 8) Créer un carré magique selon cette méthode pour toutes les dimensions de 3 à 10. Sont-ils tous magiques? Pour aller plus loin ou pour ceux qui ont fini plus tôt. 9) Ecrire une fonction qui permute la première et la dernière colonne du carré magique créé avec la méthode du damier crénelé. Ce carré est-il magique? 10) Déterminer une condition nécessaire qui permette de conclure que le magique sera magique si on permute la première et la dernière colonne? 11) Démontrez que cette condition est toujours vérifiée lorsque le carré est construit selon la méthode du damier crénelé? 12) Est-ce que cela vous inspire une autre permutation sur les colonnes qui aboutit à un nouveau carré magique? Vérifier le en l implémentant. 5