573 lines
22 KiB
Plaintext
573 lines
22 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# TD : Les Tableaux\n",
|
||
"\n",
|
||
"Ce TD va nous permettre de manipuler les tableaux en Python."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1. Rappel\n",
|
||
"\n",
|
||
"Pour créer un tableau en python, la syntaxe est la suivante :\n",
|
||
"\n",
|
||
"```python\n",
|
||
">>> tableau = []\n",
|
||
"```\n",
|
||
"\n",
|
||
"Pour ajouter un élément à un tableau, on utilise la méthode `append` :\n",
|
||
"\n",
|
||
"```python\n",
|
||
">>> tableau.append('NSI')\n",
|
||
">>> tableau.append('ANGLAIS')\n",
|
||
">>> tableau\n",
|
||
"['NSI', 'ANGLAIS']\n",
|
||
"```\n",
|
||
"\n",
|
||
"Pour accéder à un élément, on utilise son **indice** :\n",
|
||
"\n",
|
||
"```python\n",
|
||
">>> tableau[0]\n",
|
||
"'NSI'\n",
|
||
">>> tableau[1]\n",
|
||
"'ANGLAIS'\n",
|
||
"```\n",
|
||
"\n",
|
||
"Il est également possible de créer un tableau avec un ensemble d'éléments :\n",
|
||
"\n",
|
||
"```python\n",
|
||
">>> tableau = ['NSI', 'ANGLAIS', 'PHYSIQUE']\n",
|
||
">>> tableau\n",
|
||
"['NSI', 'ANGLAIS', 'PHYSIQUE']\n",
|
||
"```\n",
|
||
"\n",
|
||
"Il est possible d'obtenir la taille du tableau, i.e le nombre d'éléments grâce à la méthode `len` :\n",
|
||
"\n",
|
||
"```python\n",
|
||
">>> len(tableau)\n",
|
||
"3\n",
|
||
"```"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 2. Exercices"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Exercice 1 : Création de tableaux\n",
|
||
"\n",
|
||
"1. Créer un tableau contenant l'ensemble des noms des personnes dans la salle de TP\n",
|
||
"2. Créer un tableau contenant l'ensemble des entiers pairs entre 0 et 20 inclus,\n",
|
||
"3. Afficher uniquement les entiers du tableau, construit à la question 2, qui sont multiples de 4.\n",
|
||
"4. Créer une fonction `aleatoire` qui renvoie un tableau de valeurs aléatoires. Elle prend 3 entiers en paramètre :\n",
|
||
" - $n$ : le nombre d'éléments du tableau\n",
|
||
" - $min$ : la valeur minimale possible\n",
|
||
" - $max$ : la valeur maximale possible"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 4"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Exercice 2 : Parcours et Recherche\n",
|
||
"\n",
|
||
"```python\n",
|
||
">>> groupe_1 = ['Alan', 'Brice', 'Chloé', 'Damien', 'Eléonore', 'Farid']\n",
|
||
">>> groupe_2 = ['Damien', 'Killian', 'Margot', 'Tom', 'Hugo', 'Killian']\n",
|
||
"```\n",
|
||
"\n",
|
||
"1. Écrire une fonction `indice` qui prend en paramètre un tableau de noms et un nom et permet d'obtenir l'indice du nom dans le tableau.\n",
|
||
"2. Écrire une fonction `est_present` qui prend en paramètre un tableau et un nom et renvoie True si le nom est présent dans le tableau, False sinon.\n",
|
||
"3. Écrire une fonction `indices` qui prend en paramètre un tableau de noms et un nom et permet d'obtenir l'ensemble des indices du nom dans le tableau.\n",
|
||
"4. Écrire une fonction `compte` qui prend en paramètre un tableau de noms et un nom et permet d'obtenir le nombre d'occurrences du nom dans le tableau."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 4"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Exercice 3 : Agrégation\n",
|
||
"\n",
|
||
"```python\n",
|
||
">>> notes = [14.5, 13, 7, 10.25, 16, 12.5, 9.5]\n",
|
||
"```\n",
|
||
"\n",
|
||
"1. Écrire une fonction `somme` qui prend en paramètre un tableau de flottants et renvoie la somme des valeurs du tableau.\n",
|
||
"2. Écrire une fonction `moyenne` qui prend en paramètre un tableau de flottants et renvoie la valeur moyenne du tableau.\n",
|
||
"3. Écrire une fonction `maximum` qui prend en paramètre un tableau de flottants et renvoie la valeur maximale du tableau. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Exercice 4 : Manipulations sur les tableaux\n",
|
||
"\n",
|
||
"Pour tester les fonctions de manipulations, nous utiliserons le Code Konami<sup>[wikipédia](https://fr.wikipedia.org/wiki/Code_Konami)</sup>\n",
|
||
"\n",
|
||
"```python\n",
|
||
">>> code = [\"↑\", \"↑\", \"↓\",\"↓\", \"←\", \"→\", \"←\", \"→\", \"B\", \"A\"]\n",
|
||
"```\n",
|
||
"\n",
|
||
"1. Écrire une méthode `inverser` qui prend en paramètre un tableau et a pour effet de bord d'inverser l'ensemble des valeurs du tableau.\n",
|
||
"2. Écrire une fonction `copie` qui prend en paramètre un tableau et renvoie une copie du tableau.\n",
|
||
"3. Écrire une méthode `dedoublonner` qui prend en paramètre un tableau et a pour effet de bord de supprimer les doublons d'une même valeur. \n",
|
||
"4. Écrire une fonction `tranche` qui prend en paramètre un tableau et deux entiers $min$ et $max$, et renvoie le sous-tableau entre $min$ et $max$."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 4"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Exercice 5 : Matrice\n",
|
||
"\n",
|
||
"1. Écrire une fonction `ligne` qui prend en paramètre une matrice et un indice de ligne en entrées et renvoie un tableau avec l'ensemble des valeurs de la ligne.\n",
|
||
"2. Écrire une fonction `colonne` qui prend en paramètre une matrice et un indice de colonne en entrées et renvoie un tableau avec l'ensemble des valeurs de la colonne.\n",
|
||
"3. Écrire une fonction `diagonale_nord_ouest` qui prend en paramètre une matrice et renvoie un tableau avec l'ensemble des valeurs de la diagonale. La première valeur est celle à l'indice \\[0]\\[0] et la dernière celle correspondant à l'indice \\[len(matrice) - 1]\\[len(matrice) - 1].\n",
|
||
"4. Écrire une fonction `diagonale_nord_est` qui prend en paramètre une matrice et renvoie un tableau avec l'ensemble des valeurs de la diagonale. La première valeur est celle à l'indice \\[0]\\[len(matrice) - 1] et la dernière celle correspondant à l'indice \\[len(matrice) - 1]\\[0]."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 4"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Application - Carré magique\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width:100px;text-align:center;\">\n",
|
||
"<caption style=\"caption-side:bottom;\">Fig 1. - Carré d'ordre 4</caption>\n",
|
||
"<tr style=\"border:none;\"><td>16</td><td>3</td><td>2</td><td>13</td></tr>\n",
|
||
"<tr style=\"border:none;\"><td>5</td><td>10</td><td>11</td><td>8</td></tr>\n",
|
||
"<tr style=\"border:none;\"><td>9</td><td>6</td><td>7</td><td>12</td></tr>\n",
|
||
"<tr style=\"border:none;\"><td>4</td><td>15</td><td>14</td><td>1</td></tr>\n",
|
||
"</table>\n",
|
||
"\n",
|
||
"\n",
|
||
"En mathématiques, un ***carré magique*** d’ordre $n$ est composé de $n^2$ entiers strictement positifs, écrits sous la forme d’un tableau carré. Ces nombres sont disposés de sorte que leurs sommes sur chaque rangée, sur chaque colonne et sur chaque diagonale principale soient égales. On nomme alors ***constante magique*** la valeur de ces sommes.\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width:100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig 1.1 - Carré magique avec sa constante égale à 34</caption>\n",
|
||
"<tr style=\"border:none;\"><th style=\"border : none;\"></th><td>16</td><td>3</td><td>2</td><td>13</td><th style=\"border : none;padding-left:.5em;\">→34</th></tr>\n",
|
||
"<tr style=\"border:none;\"><th style=\"border : none;\"></th><td>5</td><td>10</td><td>11</td><td>8</td><th style=\"border : none;padding-left:.5em;\">→34</th></tr>\n",
|
||
"<tr style=\"border:none;\"><th style=\"border : none;\"></th><td>9</td><td>6</td><td>7</td><td>12</td><th style=\"border : none;padding-left:.5em;\">→34</th></tr>\n",
|
||
"<tr style=\"border:none;\"><th style=\"border : none;\"></th><td>4</td><td>15</td><td>14</td><td>1</td><th style=\"border : none;padding-left:.5em;\">→34</th></tr>\n",
|
||
"<tr style=\"border:none;\"><th style=\"border : none;\">↙ 34</th><th style=\"border:none;\">↓ 34</th><th style=\"border:none;\">↓ 34</th><th style=\"border:none;\">↓ 34</th><th style=\"border:none;\">↓ 34</th><th style=\"border:none;\">↘ 34</th></tr>\n",
|
||
"</table>\n",
|
||
"\n",
|
||
"\n",
|
||
"> Écrire un prédicat `est_magique` qui prend une matrice d'entiers en paramètre et indique si le carré est magique ou non."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Carré magique de lettres\n",
|
||
"\n",
|
||
"Un ***carré magique de lettres***, également appelé « ***mots carrés*** », est une forme de mots croisés disposé en carré, ne comportant pas de case noire et constitué de mots valides dans une langue définie. Ils peuvent, par définition, être lus horizontalement et verticalement et présentent dans ces deux sens les mêmes mots.\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig.2.1 - Carré magique de lettres d'ordre 3</caption>\n",
|
||
"<tr><td>T</td><td>E</td><td>L</td></tr>\n",
|
||
"<tr><td>E</td><td>T</td><td>E</td></tr>\n",
|
||
"<tr><td>L</td><td>E</td><td>S</td></tr>\n",
|
||
"</table>\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig.2.2 - Carré magique de lettres d'ordre 5</caption>\n",
|
||
"<tr><td>C</td><td>U</td><td>L</td><td>T</td><td>E</td></tr>\n",
|
||
"<tr><td>U</td><td>N</td><td>I</td><td>E</td><td>S</td></tr>\n",
|
||
"<tr><td>L</td><td>I</td><td>O</td><td>N</td><td>S</td></tr>\n",
|
||
"<tr><td>T</td><td>E</td><td>N</td><td>T</td><td>A</td></tr>\n",
|
||
"<tr><td>E</td><td>S</td><td>S</td><td>A</td><td>I</td></tr>\n",
|
||
"</table>\n",
|
||
"\n",
|
||
"> Écrire un prédicat `est_magique_lettres` qui prend une matrice de caractères en paramètre et indique si le carré est magique de lettres ou non."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Application - Pour aller plus loin\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig.3 - Dessin d'une maison</caption>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"</table>\n",
|
||
"\n",
|
||
"Déclaration de la matrice correspondante à la Fig.1 :\n",
|
||
"```python\n",
|
||
"matrice = [\n",
|
||
" ['⚪', '⚪', '⚪', '⚫', '⚪', '⚪'],\n",
|
||
" ['⚪', '⚪', '⚫', '⚪', '⚫', '⚪'],\n",
|
||
" ['⚪', '⚫', '⚪', '⚪', '⚪', '⚫'],\n",
|
||
" ['⚫', '⚫', '⚫', '⚫', '⚫', '⚫'],\n",
|
||
" ['⚫', '⚪', '⚫', '⚪', '⚪', '⚫'],\n",
|
||
" ['⚫', '⚫', '⚫', '⚫', '⚫', '⚫']\n",
|
||
"]\n",
|
||
"```"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"1. Écrire une méthode `miroir_vertical` qui prend en paramètre une matrice et a pour effet de bord de réaliser l'effet miroir vertical sur les valeurs de la matrice.\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig.3.1 - Effet miroir vertical de la Fig.4</caption>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"</table>"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 1"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"2. Écrire une méthode `miroir_horizontal` qui prend en paramètre une matrice et a pour effet de bord de réaliser l'effet miroir horizontal sur les valeurs de la matrice.\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig.3.2 - Effet miroir horizontal de la Fig.4</caption>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"</table>"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"3. Écrire une fonction `rotation_horaire` qui prend en paramètre une matrice et renvoie une matrice dont les valeurs correspondent à la rotation dans le sens horaire des valeurs de la matrice.\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig.3.3 - Roration horaire de la Fig.4</caption>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"</table>"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 3"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"4. Écrire une fonction `rotation_anti_horaire` qui prend en paramètre une matrice et renvoie une matrice dont les valeurs correspondent à la rotation dans le sens anti-horaire des valeurs de la matrice.\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig.3.4 - Roration anti-horaire de la Fig.4</caption>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"</table>"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Question 4"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Pour valider vos fonctions, vous pouvez réaliser sur papier les opérations miroir et de rotation sur la Fig.4 et vérifier que les résultats obtenus sont conformes.\n",
|
||
"\n",
|
||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||
" <caption style=\"caption-side:bottom;\">Fig.4 - Dessin d'un bateau avec une mouette</caption>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||
"<tr><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td></tr>\n",
|
||
"</table>\n",
|
||
"\n",
|
||
"Déclaration de la matrice correspondante à la Fig.4 :\n",
|
||
"```python\n",
|
||
"matrice = [\n",
|
||
" ['⚪', '⚪', '⚫', '⚪', '⚪', '⚪', '⚪'],\n",
|
||
" ['⚪', '⚫', '⚫', '⚪', '⚫', '⚪', '⚫'],\n",
|
||
" ['⚫', '⚪', '⚫', '⚪', '⚪', '⚫', '⚪'],\n",
|
||
" ['⚪', '⚫', '⚫', '⚪', '⚪', '⚪', '⚪'],\n",
|
||
" ['⚪', '⚪', '⚫', '⚪', '⚪', '⚪', '⚪'],\n",
|
||
" ['⚫', '⚫', '⚫', '⚫', '⚫', '⚫', '⚫'],\n",
|
||
" ['⚫', '⚪', '⚪', '⚪', '⚪', '⚪', '⚫'],\n",
|
||
" ['⚪', '⚫', '⚫', '⚫', '⚫', '⚫', '⚪']\n",
|
||
"]\n",
|
||
"```"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.9.7"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|