{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "L'objectif de ce notebook est d'appliquer les notions vues sur les structures de données pour préparer le projet qui arrivera à la fin de cet enseignement. En particulier, nous allons structurer les données que nous allons manipuler dans le projet.\n", "\n", "Le code suivant contient plusieurs matrices. Chacune de ces matrices correspond à la représentation d'un chiffre (entre 0 et 9). Une matrice est structurée sous la forme d'une liste de listes." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "nb0a = [[1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb0b = [[0,1,1,1,0],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [0,1,1,1,0]]\n", "\n", "nb1a = [[0,0,1,0,0],\n", " [0,0,1,0,0],\n", " [0,0,1,0,0],\n", " [0,0,1,0,0],\n", " [0,0,1,0,0],\n", " [0,0,1,0,0]]\n", "\n", "nb1b = [[0,0,0,0,0],\n", " [0,0,1,0,0],\n", " [0,0,1,0,0],\n", " [0,0,1,0,0],\n", " [0,0,1,0,0],\n", " [0,0,0,0,0]]\n", "\n", "nb2a = [[1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1],\n", " [1,0,0,0,0],\n", " [1,0,0,0,0],\n", " [1,1,1,1,1]]\n", "\n", "nb2b = [[1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1],\n", " [1,0,0,0,0],\n", " [1,1,1,1,1]]\n", "\n", "nb3a = [[1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb3b = [[1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb4a = [[1,0,1,0,0],\n", " [1,0,1,0,0],\n", " [1,0,1,0,0],\n", " [1,1,1,1,1],\n", " [0,0,1,0,0],\n", " [0,0,1,0,0]]\n", "\n", "nb4b = [[0,0,0,1,0],\n", " [0,0,1,1,0],\n", " [0,1,0,1,0],\n", " [1,1,1,1,1],\n", " [0,0,0,1,0],\n", " [0,0,0,1,0]]\n", "\n", "nb5a = [[1,1,1,1,1],\n", " [1,0,0,0,0],\n", " [1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb5b = [[1,1,1,1,1],\n", " [1,0,0,0,0],\n", " [1,0,0,0,0],\n", " [1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb5c = [[1,1,1,1,1],\n", " [1,0,0,0,0],\n", " [1,1,1,1,0],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,0]]\n", "\n", "nb6a = [[1,1,1,1,1],\n", " [1,0,0,0,0],\n", " [1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb6b = [[1,1,1,1,1],\n", " [1,0,0,0,0],\n", " [1,0,0,0,0],\n", " [1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb6c = [[0,1,1,1,1],\n", " [1,0,0,0,0],\n", " [1,1,1,1,0],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [0,1,1,1,0]]\n", "\n", "nb7a = [[1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1]]\n", "\n", "nb7b = [[1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,0,1,0],\n", " [0,0,1,0,0],\n", " [0,1,0,0,0],\n", " [1,0,0,0,0]]\n", "\n", "nb8a = [[1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb8b = [[1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb8c= [[0,1,1,1,0],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [0,1,1,1,0]]\n", "\n", "nb9a = [[1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb9b = [[1,1,1,1,1],\n", " [1,0,0,0,1],\n", " [1,0,0,0,1],\n", " [1,1,1,1,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,1]]\n", "\n", "nb9c = [[0,1,1,1,0],\n", " [1,0,0,0,1],\n", " [0,1,1,1,1],\n", " [0,0,0,0,1],\n", " [0,0,0,0,1],\n", " [1,1,1,1,0]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La premiere étape de ce notebook consiste à développer la fonction permettant d'afficher le contenu d'une matrice, avec le symbole \"#\" pour le '1' et un espace pour le '0'. Nous avons nommé cette fonction print_matrice et son squelette vous est fourni. Vous devez poursuivre le développement de cette fonction dont l'objectif est d'afficher la matrice nommée m (il s'agit du paramètre de la fonction -- vous y viendrez dans la séance prochaine --). Par exemple, l'affichage de la matrice nb9c avec cette fonction doit donner l'affichage suivant :\n", "\n", "```\n", " ### \n", "# #\n", " ####\n", " #\n", " #\n", "#### \n", "```" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# \n" ] } ], "source": [ "def print_diese():\n", " print(\"#\", end=\"\")\n", "\n", "def print_espace():\n", " print(\" \", end=\"\")\n", "\n", "def print_saut_de_ligne():\n", " print(\"\")\n", " \n", "def print_matrice(m):\n", " # Corps de la fonction a completer.\n", " print_diese()\n", " print_espace()\n", " print_saut_de_ligne()\n", "\n", "print_matrice(nb9c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La seconde étape consiste à développer une foncton permettant de mettre à plat une matrice. Il s'agit, autrement dit, de concaténer les différentes lignes de la matrice. Nous avons nommé cette fonction flatten_matrice et son squelette vous est fourni. Vous devez poursuivre le développement de cette fonction dont l'objectif est d'applatir la matrice nommée m (il s'agit du paramètre de la fonction -- vous y viendrez dans la séance prochaine) Par exemple, le résultat de l'invocation de cette fonction avec la matrice nb9c donne : [0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[]\n" ] } ], "source": [ "def flatten_matrice(m):\n", " ret = []\n", " # Corps de la fonction a completer.\n", " return ret\n", "\n", "nb9c_flat = flatten_matrice(nb9c)\n", "print(nb9c_flat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La dernière partie de cet exercice consiste à créer un dicionnaire tel que une clé correspond à un des chiffres (de 0 à 9) et la valeur associée correspond à la liste des matrices applaties qui représentent ce chiffre. Par exemple, si le dictionnaire est nommé d, alors la valeur d[1] doit contenir la liste des matrices applaties de nb1a et nb1b." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }