From 368a65b8ed37deaa4607d4a5d024d3eb6073a179 Mon Sep 17 00:00:00 2001 From: Xavier Dupre Date: Thu, 3 Aug 2023 00:02:18 +0200 Subject: [PATCH 1/8] add exams Signed-off-by: Xavier Dupre --- README.rst | 4 +- _doc/index.rst | 5 +- _doc/practice/exams/README.txt | 6 + _doc/practice/exams/exam2016_values.png | Bin 0 -> 19616 bytes .../interro_rapide_20_minutes_2014_09.ipynb | 531 + .../interro_rapide_20_minutes_2014_10.ipynb | 728 + .../interro_rapide_20_minutes_2014_11.ipynb | 11118 ++++++++++++++++ .../interro_rapide_20_minutes_2014_12.ipynb | 538 + .../interro_rapide_20_minutes_2015_09.ipynb | 551 + .../interro_rapide_20_minutes_2015_11.ipynb | 597 + .../td_note_2013_bout_de_code_coloriage.ipynb | 341 + .../td_note_2013_coloriage_correction.ipynb | 557 + _doc/practice/exams/td_note_2015.ipynb | 1429 ++ .../td_note_2015_rattrapage_enonce.ipynb | 277 + _doc/practice/exams/td_note_2016.ipynb | 1157 ++ _doc/practice/exams/td_note_2017.ipynb | 1133 ++ _doc/practice/exams/td_note_2017_2.ipynb | 892 ++ _doc/practice/exams/td_note_2018_1.ipynb | 940 ++ _doc/practice/exams/td_note_2018_2.ipynb | 842 ++ _doc/practice/exams/td_note_2019_1.ipynb | 1003 ++ _doc/practice/exams/td_note_2019_2.ipynb | 912 ++ _doc/practice/exams/td_note_2020_1.ipynb | 1077 ++ _doc/practice/exams/td_note_2020_2.ipynb | 1039 ++ _doc/practice/exams/td_note_2021.ipynb | 1238 ++ _doc/practice/exams/td_note_2022.ipynb | 1120 ++ .../exams/td_note_2022_rattrapage.ipynb | 491 + .../exams/td_note_2022_rattrapage2.ipynb | 515 + _doc/practice/exams/td_note_2023.ipynb | 680 + _doc/practice/index.rst | 1 + _doc/practice/pdf | 0 30 files changed, 29718 insertions(+), 4 deletions(-) create mode 100644 _doc/practice/exams/README.txt create mode 100644 _doc/practice/exams/exam2016_values.png create mode 100644 _doc/practice/exams/interro_rapide_20_minutes_2014_09.ipynb create mode 100644 _doc/practice/exams/interro_rapide_20_minutes_2014_10.ipynb create mode 100644 _doc/practice/exams/interro_rapide_20_minutes_2014_11.ipynb create mode 100644 _doc/practice/exams/interro_rapide_20_minutes_2014_12.ipynb create mode 100644 _doc/practice/exams/interro_rapide_20_minutes_2015_09.ipynb create mode 100644 _doc/practice/exams/interro_rapide_20_minutes_2015_11.ipynb create mode 100644 _doc/practice/exams/td_note_2013_bout_de_code_coloriage.ipynb create mode 100644 _doc/practice/exams/td_note_2013_coloriage_correction.ipynb create mode 100644 _doc/practice/exams/td_note_2015.ipynb create mode 100644 _doc/practice/exams/td_note_2015_rattrapage_enonce.ipynb create mode 100644 _doc/practice/exams/td_note_2016.ipynb create mode 100644 _doc/practice/exams/td_note_2017.ipynb create mode 100644 _doc/practice/exams/td_note_2017_2.ipynb create mode 100644 _doc/practice/exams/td_note_2018_1.ipynb create mode 100644 _doc/practice/exams/td_note_2018_2.ipynb create mode 100644 _doc/practice/exams/td_note_2019_1.ipynb create mode 100644 _doc/practice/exams/td_note_2019_2.ipynb create mode 100644 _doc/practice/exams/td_note_2020_1.ipynb create mode 100644 _doc/practice/exams/td_note_2020_2.ipynb create mode 100644 _doc/practice/exams/td_note_2021.ipynb create mode 100644 _doc/practice/exams/td_note_2022.ipynb create mode 100644 _doc/practice/exams/td_note_2022_rattrapage.ipynb create mode 100644 _doc/practice/exams/td_note_2022_rattrapage2.ipynb create mode 100644 _doc/practice/exams/td_note_2023.ipynb create mode 100644 _doc/practice/index.rst create mode 100644 _doc/practice/pdf diff --git a/README.rst b/README.rst index c12a837a..8f1d925c 100644 --- a/README.rst +++ b/README.rst @@ -13,8 +13,8 @@ :alt: MIT License :target: http://opensource.org/licenses/MIT -.. image:: https://codecov.io/github/sdpython/teachpyx/coverage.svg?branch=main - :target: https://codecov.io/github/sdpython/teachpyx?branch=main +.. image:: https://codecov.io/github/sdpython/teachpyx/branch/main/graph/badge.svg?token=zmROB7lJAt + :target: https://codecov.io/github/sdpython/teachpyx .. image:: http://img.shields.io/github/issues/sdpython/teachpyx.svg :alt: GitHub Issues diff --git a/_doc/index.rst b/_doc/index.rst index 2cf3c381..73954a54 100644 --- a/_doc/index.rst +++ b/_doc/index.rst @@ -23,6 +23,7 @@ Il est aussi disponible en introduction py/index + practice/index c_data/index c_resume/index api/index @@ -55,8 +56,8 @@ Le contenu est sur `github `_. :alt: MIT License :target: http://opensource.org/licenses/MIT -.. image:: https://codecov.io/github/sdpython/teachpyx/coverage.svg?branch=main - :target: https://codecov.io/github/sdpython/teachpyx?branch=main +.. image:: https://codecov.io/github/sdpython/teachpyx/branch/main/graph/badge.svg?token=zmROB7lJAt + :target: https://codecov.io/github/sdpython/teachpyx .. image:: http://img.shields.io/github/issues/sdpython/teachpyx.svg :alt: GitHub Issues diff --git a/_doc/practice/exams/README.txt b/_doc/practice/exams/README.txt new file mode 100644 index 00000000..ac68996e --- /dev/null +++ b/_doc/practice/exams/README.txt @@ -0,0 +1,6 @@ + +1A - Examens et solutions +------------------------- + +Le cours d'introduction à l'algorithmie est conclu par une séance de TD noté. +Ces notebooks implémentent les solutions. diff --git a/_doc/practice/exams/exam2016_values.png b/_doc/practice/exams/exam2016_values.png new file mode 100644 index 0000000000000000000000000000000000000000..c621b09739a04ad31af47af048db5f988d9cef67 GIT binary patch literal 19616 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 uW2566& literal 0 HcmV?d00001 diff --git a/_doc/practice/exams/interro_rapide_20_minutes_2014_09.ipynb b/_doc/practice/exams/interro_rapide_20_minutes_2014_09.ipynb new file mode 100644 index 00000000..bfefbf1a --- /dev/null +++ b/_doc/practice/exams/interro_rapide_20_minutes_2014_09.ipynb @@ -0,0 +1,531 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Correction de l'interrogation \u00e9crite du 26 septembre 2014\n", + "\n", + "cha\u00eene de caract\u00e8res, tri, fonction" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "Ecrire une fonction qui retourne 1 si $n$ est un multiple de 2014." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 0\n" + ] + } + ], + "source": [ + "def mul2014(n):\n", + " return 1 if n % 2014 == 0 else 0\n", + "\n", + "print(mul2014(2014), mul2014(2015))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour cette question, quelques \u00e9l\u00e8ves ont v\u00e9rifi\u00e9 que ``n`` \u00e9tait plus petit que 2014 d'abord. Ce n'est pas vraiment la peine." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "Calculer le minimum des cosinus des entiers de 1 \u00e0 10." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.9899924966004454" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import math\n", + "min ( math.cos(i) for i in range(1,11) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``range(0,10)`` va de 0 \u00e0 10 exclu." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(range(0,10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "Ecire une fonction qui v\u00e9rifie qu'une cha\u00eene de caract\u00e8res est sym\u00e9trique (ex: ``kayak``)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True False\n" + ] + } + ], + "source": [ + "def symetrie(s):\n", + " i=0\n", + " j=len(s)-1\n", + " while i < j :\n", + " if s[i] != s[j] : return False\n", + " i += 1\n", + " j -= 1\n", + " return True\n", + "\n", + "print(symetrie(\"kayak\"), symetrie(\"kakaks\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sur cette question, on fait r\u00e9guli\u00e8rement deux erreurs lorsqu'on commence \u00e0 programmer :\n", + "\n", + "* Le dernier indice est ``len(s)-1`` et non ``len(s)``. Le premier indice est 0.\n", + "* Il ne sert \u00e0 rien que ``i`` aille de 0 \u00e0 ``len(s)-1``, aller de 0 \u00e0 ``len(s)//2`` suffit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "Ecrire une fonction qui retourne 1 si une cha\u00eene de caract\u00e8res contient un A, 0 sinon." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], + "source": [ + "def contient_A(s):\n", + " return 1 if \"A\" in s else 0\n", + "\n", + "print(contient_A(\"e\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Utiliser une boucle n'\u00e9tait pas n\u00e9cessaire, un simple test suffit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "Calculer $\\sum_{i=1}^{10} \\frac{x^{2i}}{\\sin i}$." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.12093467645909634" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import math\n", + "x = 0.3\n", + "sum ( x**(2*i) / math.sin(i) for i in range(1,11) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "Ecrire qu'une fonction qui v\u00e9rifie si un tableau est tri\u00e9." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(True, True, False)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def est_trie(tab):\n", + " for i in range(1,len(tab)):\n", + " if tab[i-1] > tab[i] : return False\n", + " return True\n", + "\n", + "est_trie( [1]),est_trie( [1,2,3]),est_trie( [1,2,3,0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quelques \u00e9l\u00e8ves ont \u00e9crit quelque chose comme :" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def est_trie(tab):\n", + " res = tab.copy()\n", + " res.sort()\n", + " return res == tab" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bien que ceci soit tout-\u00e0-fait correct, le fait de trier une copie du tableau n\u00e9cessite des calculs inutiles. Le co\u00fbt d'un tri est en $O(n \\ln n)$ alors que tester si le tableau est tri\u00e9 est au pire de $O(n)$ puisqu'il suffit de le parcourir une fois. J'ajoute une derni\u00e8re remarque : sans copie la fonction ``est_trie`` retourne toujours vrai." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True True\n", + "False True\n" + ] + } + ], + "source": [ + "def est_trie_nocopy(tab):\n", + " res = tab\n", + " res.sort()\n", + " return res == tab\n", + "\n", + "t = [ 0,1,2 ]\n", + "print( est_trie(t), est_trie_nocopy(t) )\n", + "\n", + "t = [ 0,1,2,0 ]\n", + "print( est_trie(t), est_trie_nocopy(t) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La raison est l'instruction ``res = tab`` cr\u00e9e une autre variable ``res`` mais l'instruction n'implique pas la copie de la liste. Elle ne fait que donner un autre nom \u00e0 la m\u00eame liste. Ainsi :" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([1000000000, 1, 2], [1000000000, 1, 2])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = [0,1,2]\n", + "t2 = t\n", + "t2[0] = 1000000000\n", + "\n", + "t,t2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Modifier la liste ``t`` revient \u00e0 modifier la liste ``t2`` puisque ce sont les m\u00eames. Cela est d\u00fb au fait que le langage Python ne copie les listes, les dictionnaires ou les instances de classes que si ces copies sont demand\u00e9es explicitement. Par d\u00e9faut, le langage \u00e9vite toute copie." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/interro_rapide_20_minutes_2014_10.ipynb b/_doc/practice/exams/interro_rapide_20_minutes_2014_10.ipynb new file mode 100644 index 00000000..274eee13 --- /dev/null +++ b/_doc/practice/exams/interro_rapide_20_minutes_2014_10.ipynb @@ -0,0 +1,728 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Correction de l'interrogation \u00e9crite du 10 octobre 2014\n", + "\n", + "dictionnaire et co\u00fbt algorithmique" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "Ecrire une fonction qui prend une cha\u00eene de caract\u00e8res en argument et la retourne sans ses voyelles." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('bnjr', ' rvr')" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def pas_de_voyelle(mot):\n", + " s = \"\"\n", + " for c in mot :\n", + " if c not in \"aeiouy\" : \n", + " s += c\n", + " return s\n", + "\n", + "pas_de_voyelle(\"bonjour\"), pas_de_voyelle(\"au revoir\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cette r\u00e9ponse n'est qu'une r\u00e9ponse parmi d'autres. Certains utilisaient la m\u00e9thode [replace](https://docs.python.org/3.4/library/stdtypes.html#str.replace), d'autres un test ``c == \"a\" or c == \"e\" ...``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "Transformer une matrice repr\u00e9sent\u00e9e sous forme de double liste (exemple : ``[[0,1,0],[0,0,1]]``) en un dictionnaire dont les cl\u00e9s sont les coordonn\u00e9es et les valeurs les coefficients (soit autant d'\u00e9l\u00e9ments que de valeurs non nulles)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(0, 1): 1, (1, 2): 1}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mat = [[0,1,0],[0,0,1]]\n", + "\n", + "mat_dict = { }\n", + "for i,line in enumerate(mat) :\n", + " for j,c in enumerate(line) :\n", + " if c != 0 :\n", + " mat_dict[i,j] = c\n", + "\n", + "mat_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour cette question, le code \u00e9crit fonction doit fonctionner pour n'importe quelle matrice." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "Calculer $\\sum_{i=1}^{10} \\frac{1}{i}$" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.9289682539682538" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sum ( 1/i for i in range(1,11) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q4\n", + "\n", + "Quel le co\u00fbt du programme suivant en $O(N)$ ?" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "581.4676254832484\n" + ] + } + ], + "source": [ + "from math import log\n", + "s = 0\n", + "N = 100\n", + "while N > 1 :\n", + " for i in range(1, N):\n", + " s += log(i)\n", + " N //= 2\n", + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La premi\u00e8re boucle s'ex\u00e9cute pour les valeurs $N$, $N/2$, $N/4$, ... jusqu'\u00e0 ce que $N \\leqslant 1$. La boucle imbriqu\u00e9e fait la somme des $log$ de 1 \u00e0 $N$. Le nombre des op\u00e9rations est en $O(N + N/2 + N/4 + ...)$, soit quelque chose comme $N \\sum_{i=1}^{\\ln_2 N} \\frac{1}{2^i} \\leqslant N \\sum_{i=1}^{\\infty} \\frac{1}{2^i} \\leqslant 2N$ (c'est une somme g\u00e9om\u00e9trique). On v\u00e9rifie avec le code suivant qui compte le nombre de fois o\u00f9 on ajoute un logarithme." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10000 19981 20000\n", + "20000 39980 40000\n", + "30000 59978 60000\n", + "40000 79979 80000\n", + "50000 99978 100000\n", + "60000 119977 120000\n", + "70000 139977 140000\n", + "80000 159978 160000\n", + "90000 179974 180000\n" + ] + } + ], + "source": [ + "def calcul(N):\n", + " s = 0\n", + " c = 0\n", + " while N > 1 :\n", + " for i in range(1, N):\n", + " s += log(i)\n", + " c += 1\n", + " N //= 2\n", + " return c\n", + "for i in range(10000,100000, 10000) :\n", + " print( i, calcul(i), i * 2 )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "On consid\u00e8re un mot ``abcdef``, puis on construit un autre mot selon le sch\u00e9ma :\n", + "\n", + "* 1\u00e8re lettre, derni\u00e8re lettre, 2\u00e8me lettre, avant-derni\u00e8re lettre, 3\u00e8me lettre, ...\n", + "* Exemple 1 : ``abcdef`` $\\rightarrow$ ``afbecd``\n", + "* Exemple 2 : ``kayak`` $\\rightarrow$ ``kkaay``" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('afbecd', 'kkaay')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def strange(mot):\n", + " s = \"\"\n", + " for i in range(len(mot)//2) :\n", + " s += mot[i] + mot[-i-1]\n", + " if len(mot)%2 == 1 :\n", + " s += mot[len(mot)//2]\n", + " return s\n", + "\n", + "strange(\"abcdef\"), strange(\"kayak\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "Retourner un dictionnaire : les cl\u00e9s deviennent les valeurs et les valeurs deviennent les cl\u00e9s (on suppose que les cl\u00e9s et valeurs sont uniques)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'valeur2': 'cle2', 'valeur1': 'cle1'}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dictionnaire_depart = { \"cle1\":\"valeur1\", \"cle2\":\"valeur2\" }\n", + "dictionnaire_retourne = { } \n", + "for k,v in dictionnaire_depart.items():\n", + " dictionnaire_retourne[v] = k\n", + " \n", + "dictionnaire_retourne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La m\u00e9thode [items](https://docs.python.org/3.4/library/stdtypes.html#dict.items) retourne un [it\u00e9rateur](http://fr.wikipedia.org/wiki/It%C3%A9rateur) et non une liste. Un it\u00e9reur n'est pas un ensemble mais une fa\u00e7on de parcourir tous les \u00e9l\u00e9ments d'un ensemble." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_items([('cle1', 'valeur1'), ('cle2', 'valeur2')])\n", + "[('cle1', 'valeur1'), ('cle2', 'valeur2')]\n" + ] + } + ], + "source": [ + "dictionnaire_depart = { \"cle1\":\"valeur1\", \"cle2\":\"valeur2\" }\n", + "\n", + "print ( dictionnaire_depart.items() )\n", + "print ( list ( dictionnaire_depart.items() ) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le python est un langage paresseux car tr\u00e8s lent. Il faut lui demander de fa\u00e7on explicite de construire un ensemble ou de copier un ensemble. Par d\u00e9faut, il ne copie jamais un dictionnaire ou une liste et il pr\u00e9f\u00e8re retourner un it\u00e9rateur plut\u00f4t qu'une copie d'un ensemble. La plupart du temps, on ne s'en aper\u00e7oit pas \u00e0 moins de vouloir acc\u00e9der \u00e0 un \u00e9l\u00e9ment pr\u00e9cis de l'ensemble :" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'dict_items' object does not support indexing", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdictionnaire_depart\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: 'dict_items' object does not support indexing" + ] + } + ], + "source": [ + "dictionnaire_depart.items() [0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La fonction ``ensemble`` suivante retourne une liste d'\u00e9l\u00e9ments, la fonction ``iterateur`` retourne une fa\u00e7on de parcourir un ensemble. On appelle ce type ce fonction un [g\u00e9n\u00e9rateur](https://docs.python.org/3/glossary.html#term-generator)." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" + ] + } + ], + "source": [ + "def ensemble(a,b):\n", + " res = [ ]\n", + " while a < b :\n", + " res.append ( a )\n", + " a += 1\n", + " return res\n", + "\n", + "def iterateur(a,b):\n", + " while a < b :\n", + " yield a\n", + " a += 1\n", + " \n", + "print( iterateur(0,10) )\n", + "print( ensemble(0,10) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On ne peut acc\u00e9der aux \u00e9l\u00e9ments d'un g\u00e9n\u00e9rateur car cela n'a pas de sens :" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'generator' object is not subscriptable", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0miterateur\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: 'generator' object is not subscriptable" + ] + } + ], + "source": [ + "iterateur(0,10) [0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mais on peut parcourir les \u00e9l\u00e9ments g\u00e9n\u00e9r\u00e9s :" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n", + "9\n" + ] + } + ], + "source": [ + "for x in iterateur(0,10):\n", + " print(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "Calculer $\\frac{1}{1000} \\sum_{i=1}^{1000} e^{ \\frac{i}{1000} }$." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.7191411125634257" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from math import exp\n", + "1/1000 * sum ( exp ( i / 1000 ) for i in range(1,1001) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q4\n", + "\n", + "Quel le co\u00fbt du programme suivant en $O(N)$ ?" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "317.3177321667311\n" + ] + } + ], + "source": [ + "from math import log\n", + "s = 0\n", + "ii = 1\n", + "N = 7\n", + "for i in range(1,N):\n", + " ii *= 2\n", + " for k in range(1,ii):\n", + " s += log(k)\n", + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A chaque it\u00e9ration $i$, on calcule $2^i$ logarithmes. On fait $N$ it\u00e9rations soit $1 + 2 + 4 + ... + 2^N$ calculs, c'est-\u00e0-dire environ $O(1 + 2^1 + 2^2 + 2^3 + ... + 2^N) = O(2^{N+1}) = O(2^N)$ (c'est une somme g\u00e9om\u00e9trique)." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1013 1024\n", + "2036 2048\n", + "4083 4096\n", + "8178 8192\n", + "16369 16384\n", + "32752 32768\n", + "65519 65536\n", + "131054 131072\n", + "262125 262144\n", + "524268 524288\n" + ] + } + ], + "source": [ + "from math import log\n", + "\n", + "def calcul(N):\n", + " s = 0\n", + " ii = 1\n", + " c = 0\n", + " for i in range(1,N):\n", + " ii *= 2\n", + " for k in range(1,ii):\n", + " s += log(k)\n", + " c += 1\n", + " return c\n", + "\n", + "for N in range(10,20):\n", + " print(calcul(N), 2**N)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/interro_rapide_20_minutes_2014_11.ipynb b/_doc/practice/exams/interro_rapide_20_minutes_2014_11.ipynb new file mode 100644 index 00000000..c556a58c --- /dev/null +++ b/_doc/practice/exams/interro_rapide_20_minutes_2014_11.ipynb @@ -0,0 +1,11118 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Correction de l'interrogation \u00e9crite du 14 novembre 2014\n", + "\n", + "co\u00fbt algorithmique, calcul de s\u00e9ries math\u00e9matiques" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Enonc\u00e9 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1\n", + "\n", + "Le code suivant produit une erreur. Corrigez le programme." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 's' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mnbs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m7\u001b[0m \u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mn\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mnbs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0ms\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0mn\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 's' is not defined" + ] + } + ], + "source": [ + "nbs = [ 1, 5, 4, 7 ] #\n", + "for n in nbs: #\n", + " s += n #" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'objectif de ce petit programme est de calculer la somme des \u00e9l\u00e9ments de la liste ``nbs``. L'exception est d\u00e9clench\u00e9 la variable ``s`` n'est jamais cr\u00e9\u00e9. Il manque l'instruction ``s=0``." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "nbs = [ 1, 5, 4, 7 ]\n", + "s = 0\n", + "for n in nbs:\n", + " s += n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "17" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2\n", + "\n", + "Que vaut ``nbs`` dans le programme suivant :" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def f(x) : return x%2\n", + "nbs = { i:f(i) for i in range(0,5) }" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{0: 0, 1: 1, 2: 0, 3: 1, 4: 0}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nbs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3\n", + "\n", + "On consid\u00e8re le programme suivant, il affiche ``None``, pourquoi ?" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "None\n" + ] + } + ], + "source": [ + "def ma_fonction(x1,y1,x2,y2):\n", + " d = (x1-x2)**2 +(y1-y2)**2\n", + " print(d)\n", + "d = ma_fonction(0,0,1,1)\n", + "print(d)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le ``2`` correspond au premier ``print(d)``, le ``None`` correspond au second. Pour s'en convaincre, il suffit d'ajouter quelques caract\u00e8res suppl\u00e9mentaires :" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A 2\n", + "B None\n" + ] + } + ], + "source": [ + "def ma_fonction(x1,y1,x2,y2):\n", + " d = (x1-x2)**2 +(y1-y2)**2\n", + " print(\"A\",d)\n", + "d = ma_fonction(0,0,1,1)\n", + "print(\"B\",d)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Donc la variable ``d`` en dehors de la fonction vaut ``None``, cela veut que le r\u00e9sultat de la fonction ``ma_fonction`` est ``None``. Il peut \u00eatre ``None`` soit parce que la fonction contient explicitiement l'instruction ``return None`` soit parce qu'aucune instruction ``return`` n'ext ex\u00e9cut\u00e9e. C'est le cas ici puisqu'il n'y a qu'une instruction ``print``. On remplace ``print`` par ``return``." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "def ma_fonction(x1,y1,x2,y2):\n", + " d = (x1-x2)**2 +(y1-y2)**2\n", + " return d\n", + "d = ma_fonction(0,0,1,1)\n", + "print(d)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4\n", + "\n", + "Que vaut ``n`` en fonction de ``N`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "n = 0\n", + "N = 100\n", + "for i in range(0,N):\n", + " for k in range(0,i):\n", + " n += N" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "495000" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour \u00eatre plus pr\u00e9cis, 495000 = $\\frac{N^2(N-1)}{2}$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5\n", + "\n", + "Une des lignes suivantes provoque une erreur, laquelle ?" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for +: 'int' and 'str'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0ma\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"6\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0ma\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mb\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[0ma\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mb\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'int' and 'str'" + ] + } + ], + "source": [ + "a = 3 #\n", + "b = \"6\" #\n", + "a+b #\n", + "a*b #" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lorsqu'on multiplie une cha\u00eene de caract\u00e8res par un entier, cela revient \u00e0 la r\u00e9pliquer : ``3*\"6\" = \"666\"``. L'addition est impossible car on ne peut pas additionner un nombre avec une cha\u00eene de caract\u00e8res." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Enonc\u00e9 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1\n", + "\n", + "Le code suivant produit une erreur. Proposez une correction." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mnbs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m7\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mnbs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], + "source": [ + "nbs = ( 1, 5, 4, 7 ) #\n", + "nbs[0] = 0 #" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le type [tuple](https://docs.python.org/3.4/tutorial/datastructures.html#tuples-and-sequences) sont [immutable](http://fr.wikipedia.org/wiki/Objet_immuable). On ne peut pas le modifier. Mais les listes peuvent l'\u00eatre." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "nbs = [ 1, 5, 4, 7 ]\n", + "nbs[0] = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 5, 4, 7]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nbs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2\n", + "\n", + "Que vaut ``c`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "d = {4: 'quatre'}\n", + "c = d.get('4', None)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n" + ] + } + ], + "source": [ + "print(c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La m\u00e9thode [get](https://docs.python.org/3.4/library/stdtypes.html#dict.get) retourne la valeur associ\u00e9e \u00e0 une cl\u00e9 ou une autre valeur (ici ``None``) si elle ne s'y trouve pas. La raison pour laquelle le r\u00e9sultat est ``None`` ici est que '4' != 4. La cl\u00e9 '4' ne fait pas partie du dictionnaire." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3\n", + "\n", + "Que vaut ``x`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "N = 8\n", + "s = 0\n", + "while N > 0 :\n", + " for i in range(N):\n", + " s += 1\n", + " N //= 2\n", + "x = (s+1)//2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A chaque passage dans la boucle ``for``, on ajoute ``N`` \u00e0 ``s``. A chaque passage dans la boucle ``while``, on divise ``N`` par 2. Donc, apr\u00e8s la boucle ``while``, $s = N + N/2 + N/4 + N/8 + ...$. On r\u00e9p\u00e8te cela jusqu'\u00e0 ce que $N / 2^k$ soit plus grand que 0. Or, les divisions sont enti\u00e8res (symbole ``//``), ``1//2`` vaut 0. La condition devient jusqu'\u00e0 ce que $N / 2^k <1$. \n", + "\n", + "Pour le reste, c'est une suite g\u00e9om\u00e9trique. Si on pose $N=2^k$, on calcule donc la somme :\n", + "\n", + "$$s = 2^k + 2 ^{k-1} + ... + 1 = \\sum_{i=1}^{k} 2^i = \\frac{2^{k+1}-1}{2-1} = 2^{k+1}-1$$\n", + "\n", + "Et comme :\n", + "\n", + "$$x = \\frac{s+1}{2} = 2^k = N$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4\n", + "\n", + "Que vaut ``c`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "l = ['a', 'b', 'c']\n", + "c = l[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'b'" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5\n", + "\n", + "Par quoi faut-il remplacer les ``???`` pour avoir l'erreur ci-dessous ?" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'NoneType' object has no attribute 'append'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mli\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[0mma_liste\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfonction\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m \u001b[0mma_liste\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'append'" + ] + } + ], + "source": [ + "def fonction(N):\n", + " li = None # on \u00e9vite la variable l pour ne pas la confondre avec 1\n", + " for i in range(N):\n", + " if li is None: \n", + " li = [ ]\n", + " li.append(i)\n", + " return li\n", + "ma_liste = fonction(0)\n", + "ma_liste.append(-1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cette erreur se produit car ``ma_liste`` vaut ``None``. Si la fonction ``fonction`` retourne ``None``, c'est que l'instruction ``l = [ ]`` n'est jamais ex\u00e9cut\u00e9e, donc que la condition ``if l is None`` n'est jamais v\u00e9rifi\u00e9e. On ne passe donc jamais dans la boucle ``for`` et ceci arrive si ``N`` est n\u00e9gatif ou nul." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Enonc\u00e9 3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1\n", + "\n", + "Que se passe-t-il ?" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n" + ] + }, + { + "ename": "IndexError", + "evalue": "list assignment index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ml\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[1;32mdel\u001b[0m \u001b[0ml\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m: list assignment index out of range" + ] + } + ], + "source": [ + "l = [ 0, 1,2,3]\n", + "for i in range(len(l)):\n", + " print(i)\n", + " del l[i] #" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'erreur est due au fait que la boucle parcourt la liste en m\u00eame temps qu'elle supprime des \u00e9l\u00e9ments. Le r\u00e9sultat est souvent une erreur. On v\u00e9rifie en affichant ``i`` et ``l``." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "i= 0 l= [0, 1, 2, 3]\n", + "i= 1 l= [1, 2, 3]\n", + "i= 2 l= [1, 3]\n" + ] + }, + { + "ename": "IndexError", + "evalue": "list assignment index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ml\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"i=\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"l=\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0ml\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[1;32mdel\u001b[0m \u001b[0ml\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m: list assignment index out of range" + ] + } + ], + "source": [ + "l = [ 0, 1,2,3]\n", + "for i in range(len(l)):\n", + " print(\"i=\",i,\"l=\",l)\n", + " del l[i] #" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2\n", + "\n", + "Que vaut ``a`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = 2\n", + "for i in range(1,5):\n", + " a += a" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "32" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La variable ``a`` double \u00e0 chaque fois qu'on passe dans la boucle. On y passe **4** fois et on part de ``a=2``. Donc : $2*2*2*2*2=2^5=32$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3\n", + "\n", + "Que vaut ``y`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = 2.67\n", + "y = int ( x * 2 ) / 2" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.5" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La fonction revient \u00e0 arrondir au demi inf\u00e9rieur, donc $2.5$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4\n", + "\n", + "Combien d'\u00e9toiles le programme suivant affiche ?" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "*\n", + "0.26184474654812057\n" + ] + } + ], + "source": [ + "import random\n", + "\n", + "def moyenne(l):\n", + " s = 0\n", + " for x in l :\n", + " print(\"*\")\n", + " s += x\n", + " return s / len(l)\n", + "def variance(l):\n", + " return sum ( [ (x - moyenne(l))**2 for x in l ] ) / len(l)\n", + "l = [ random.random() for i in range(0,100) ]\n", + "print(variance(l)**0.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C'est un peu long \u00e0 afficher, modifions le programme pour compter les \u00e9toiles plut\u00f4t que de les afficher." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.29749469599416334\n", + "star= 10000\n" + ] + } + ], + "source": [ + "star = 0\n", + "def moyenne(l):\n", + " global star\n", + " s = 0\n", + " for x in l :\n", + " star += 1\n", + " s += x\n", + " return s / len(l)\n", + "def variance(l):\n", + " return sum ( [ (x - moyenne(l))**2 for x in l ] ) / len(l)\n", + "l = [ random.random() for i in range(0,100) ]\n", + "print(variance(l)**0.5)\n", + "print(\"star=\",star)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si $n$ est la longueur de la liste ``l``, le co\u00fbt de la fonction ``moyenne`` est $O(n)$. Le co\u00fbt de la fonction ``variance`` est $n$ fois le co\u00fbt de la fonction ``moyenne``, soit $O(n^2)$. Celle-ci pourrait \u00eatre beaucoup plus efficace en \u00e9crivant :" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.305837286201697\n", + "star= 100\n" + ] + } + ], + "source": [ + "star = 0\n", + "def moyenne(l):\n", + " global star\n", + " s = 0\n", + " for x in l :\n", + " star += 1\n", + " s += x\n", + " return s / len(l)\n", + "def variance(l):\n", + " m = moyenne(l) # on m\u00e9morise le r\u00e9sultat\n", + " return sum ( [ (x - m)**2 for x in l ] ) / len(l)\n", + "l = [ random.random() for i in range(0,100) ]\n", + "print(variance(l)**0.5)\n", + "print(\"star=\",star)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5\n", + "\n", + "Que vaut ``x`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import random\n", + "x = random.randint(0,100)\n", + "while x != 50:\n", + " x = random.randint(0,100)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "50" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "``x`` vaut n\u00e9cessairement 50 puisque c'est la seule valeur qui permette de sortir de la boucle." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 35, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/interro_rapide_20_minutes_2014_12.ipynb b/_doc/practice/exams/interro_rapide_20_minutes_2014_12.ipynb new file mode 100644 index 00000000..5f1a510a --- /dev/null +++ b/_doc/practice/exams/interro_rapide_20_minutes_2014_12.ipynb @@ -0,0 +1,538 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Correction de l'interrogation \u00e9crite du 14 novembre 2014\n", + "\n", + "dictionnaires" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "Le code suivant produit une erreur. Laquelle ?" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def make_squares(n):\n", + " squares = [i**2 for i in range(n)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comme il n'y a pas d'instruction return, la fonction retourne toujours ``None`` quelque chose le r\u00e9sultat de ce qu'elle calcule." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "None\n" + ] + } + ], + "source": [ + "def make_squares(n):\n", + " squares = [i**2 for i in range(n)]\n", + "print ( make_squares(2) )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "Que vaut ``a`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "s = 1\n", + "a = 0\n", + "for i in range(4):\n", + " a += s\n", + " s += 2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "16" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si on affiche les r\u00e9sultats interm\u00e9diaires :" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 1\n", + "1 3\n", + "4 5\n", + "9 7\n" + ] + }, + { + "data": { + "text/plain": [ + "16" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s = 1\n", + "a = 0\n", + "for i in range(4):\n", + " print(a,s)\n", + " a += s\n", + " s += 2\n", + " \n", + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "On rappelle que ``ord('a')=97``. Que vaut ``x`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "d = {i:chr(i+97) for i in range(10)}\n", + "x = d[4]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'e'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il suffit de remplacer ``i`` par 4. ``x`` vaut ``chr(97+4)`` et on se d\u00e9place de 4 lettres dans l'alphabet, soit ``e``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q4\n", + "\n", + "Que fait le programme suivant ?" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(['Alice', 'Claire', 'Bob'], 18)\n" + ] + } + ], + "source": [ + "notes = { \"Alice\": 17, \"Bob\": 18, \"Jean\u2212Ma\": 17 }\n", + "notes['Claire'] = 18\n", + "\n", + "def mystere(d):\n", + " a = 0\n", + " b = []\n", + " for k,v in d.items():\n", + " if v >= a:\n", + " a = v\n", + " b.append(k)\n", + " return (b,a)\n", + "\n", + "print(mystere(notes))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Alice': 17, 'Claire': 18, 'Bob': 18, 'Jean\u2212Ma': 17}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "notes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le programme commence par ajouter la cl\u00e9 ``Claire`` au dictionnaire. La variable ``a`` m\u00e9morise la valeur num\u00e9rique la plus grande. En l'\u00e9tat, le r\u00e9sultat programme est assez impr\u00e9visible puisqu'il d\u00e9pend de l'ordre dans lequel on parcourt les \u00e9l\u00e9ments. Je pense que la fonction devrait r\u00e9cup\u00e9rer dans une liste l'ensemble des pr\u00e9noms correspondant \u00e0 cette valeur maximale s'il \u00e9tait \u00e9crit comme ceci :" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(['Claire', 'Bob'], 18)\n" + ] + } + ], + "source": [ + "notes = { \"Alice\": 17, \"Bob\": 18, \"Jean\u2212Ma\": 17 }\n", + "notes['Claire'] = 18\n", + "\n", + "def mystere(d):\n", + " a = 0\n", + " b = []\n", + " for k,v in d.items():\n", + " if v == a:\n", + " b.append(k)\n", + " elif v > a:\n", + " a = v\n", + " b = [ k ]\n", + " return (b,a)\n", + "\n", + "print(mystere(notes))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q5\n", + "\n", + "Que renvoie la fonction suivante en fonction de ``n`` ?" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def f(n):\n", + " while n != 1:\n", + " if n%2 == 0:\n", + " n = n/2\n", + " else:\n", + " n = 3*n + 1\n", + " return n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f(4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "D'apr\u00e8s la condition indiqu\u00e9e dans la boucle ``while``, la fonction retourne 1. Reste \u00e0 savoir si cela est toujours possible quelque soit $n$. Cette question \u00e9tait un peu hors sujet. Il faudrait \u00e9tudier la convergence de la suite $u_{n+1}=f(u_n)$ o\u00f9 $f$ est la fonction :\n", + "\n", + "$f(n) = \\left\\{ \\begin{array}{ll} \\frac{n}{2} & si \\; n \\; pair \\\\ 3n+1 &sinon \\end{array}\\right.$\n", + "\n", + "Ce probl\u00e8me n'est pas \u00e9vident puisqu'il ressemble beaucoup \u00e0 la [conjecture de Syracuse](http://fr.wikipedia.org/wiki/Conjecture_de_Syracuse)." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/interro_rapide_20_minutes_2015_09.ipynb b/_doc/practice/exams/interro_rapide_20_minutes_2015_09.ipynb new file mode 100644 index 00000000..eafd0300 --- /dev/null +++ b/_doc/practice/exams/interro_rapide_20_minutes_2015_09.ipynb @@ -0,0 +1,551 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Correction de l'interrogation \u00e9crite du 26 septembre 2015\n", + "\n", + "tests, boucles, fonctions" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "Le programme suivant provoque une erreur pourquoi ?" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n" + ] + }, + { + "ename": "IndexError", + "evalue": "list index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mtab\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtab\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtab\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mtab\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m: list index out of range" + ] + } + ], + "source": [ + "tab = [1, 3]\n", + "for i in range(0, len(tab)):\n", + " print(tab[i] + tab[i+1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On d\u00e9couvre le probl\u00e8me en ajoutant des affichages interm\u00e9diaires :" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 1 2\n", + "4\n", + "1 2 2\n" + ] + }, + { + "ename": "IndexError", + "evalue": "list index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtab\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtab\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtab\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mtab\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m: list index out of range" + ] + } + ], + "source": [ + "tab = [1, 3]\n", + "for i in range(0, len(tab)):\n", + " print(i, i+1, len(tab))\n", + " print(tab[i] + tab[i+1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A la derni\u00e8re it\u00e9ration, $i+1$ d\u00e9vient \u00e9gal \u00e0 la longueur de la liste ``tab`` or le dernier indice d'un tableau est ``len(tab)-1``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "O\u00f9 est l'erreur de syntaxe ?" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 2)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m2\u001b[0m\n\u001b[1;33m if n = 1:\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "n = 1\n", + "if n = 1:\n", + " y = 0\n", + "else:\n", + " y = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le test d'\u00e9galit\u00e9 s'\u00e9crit ``==``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "On associe la valeur 1 \u00e0 la lettre *a*, 2 \u00e0 *b* et ainsi de suite. Ecrire une fonction qui fait la somme de ces valeurs pour une cha\u00eene de caract\u00e8res.\n", + "\n", + "Exemple : elu $\\rightarrow$ 5 + 12 + 21 = 38" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "38" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_caracteres(mot):\n", + " s = 0\n", + " for c in mot :\n", + " s += ord(c) - ord(\"a\") + 1\n", + " return s\n", + "\n", + "somme_caracteres(\"elu\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On peut l'\u00e9crire de fa\u00e7on plus courte :" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "38" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_caracteres(mot):\n", + " return sum(ord(c) - ord(\"a\") + 1 for c in mot)\n", + "\n", + "somme_caracteres(\"elu\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "Barrez les lignes qui produiraient une erreur \u00e0 l'ex\u00e9cution et dire pourquoi ?" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "Can't convert 'int' object to str implicitly", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"a\"\u001b[0m \u001b[1;33m*\u001b[0m \u001b[1;36m3\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mz\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m3\u001b[0m \u001b[1;33m*\u001b[0m \u001b[1;34m\"a\"\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mz\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: Can't convert 'int' object to str implicitly" + ] + } + ], + "source": [ + "y = \"a\" * 3 + 1\n", + "z = 3 * \"a\" + 1\n", + "print(y,z)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les deux premi\u00e8res lignes sont incorrects car on essaye d'ajouter une cha\u00eene de caract\u00e8res \u00e0 un nombre. La premi\u00e8re op\u00e9ration est correcte ``\"a\" * 3``. Dans un sens comme dans l'autre, elle donne ``\"aaa\"``. Mais on ne peut ajouter 1 \u00e0 ``\"aaa\"``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "Que vaut ``l`` \u00e0 la fin du programme ?" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]]\n" + ] + } + ], + "source": [ + "l = []\n", + "for i in range(0, 10):\n", + " l.append([i])\n", + "print(l)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il ne faut pas confondre la m\u00e9thode [append](https://docs.python.org/3.4/tutorial/datastructures.html#more-on-lists) et [extend](https://docs.python.org/3.4/tutorial/datastructures.html#more-on-lists)." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" + ] + } + ], + "source": [ + "l = []\n", + "for i in range(0, 10):\n", + " l.extend([i])\n", + "print(l)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "Ecrire une fonction qui prend une cha\u00eene de caract\u00e8res et qui lui enl\u00e8ve une lettre sur 2." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pto'" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def un_sur_deux(mot):\n", + " s = \"\"\n", + " for i,c in enumerate(mot):\n", + " if i % 2 == 0:\n", + " s += c\n", + " return s\n", + "\n", + "un_sur_deux(\"python\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ou plus court encore :" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pto'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def un_sur_deux(mot):\n", + " return \"\".join( c for i,c in enumerate(mot) if i % 2 == 0 )\n", + "\n", + "un_sur_deux(\"python\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/interro_rapide_20_minutes_2015_11.ipynb b/_doc/practice/exams/interro_rapide_20_minutes_2015_11.ipynb new file mode 100644 index 00000000..08c10863 --- /dev/null +++ b/_doc/practice/exams/interro_rapide_20_minutes_2015_11.ipynb @@ -0,0 +1,597 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Correction de l'interrogation \u00e9crite du 6 novembre 2015\n", + "\n", + "listes et dictionnaires" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "Le programme suivant provoque une erreur de temps en temps, pourquoi ?" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "l = [0, 1, 2, 3, 4]\n", + "i = random.randint(0, 5)\n", + "del l[i] # d\u00e9clenche une exception de temps en temps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pour le faire planter de fa\u00e7on quasi syst\u00e9mtique, on l'ins\u00e8re dans une boucle :" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "ename": "IndexError", + "evalue": "list assignment index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0ml\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mi\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrandom\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrandint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mdel\u001b[0m \u001b[0ml\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m: list assignment index out of range" + ] + } + ], + "source": [ + "import random\n", + "for i in range(0,100):\n", + " l = [0, 1, 2, 3, 4]\n", + " i = random.randint(0, 5)\n", + " del l[i] # d\u00e9clenche une exception quasi s\u00fbrement" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'erreur vient du faire que la fonction [randint](https://docs.python.org/3.4/library/random.html#random.randint) tire un nombre entre 0 et 5 inclus. La liste ne contient que 5 \u00e9l\u00e9ments. Le dernier a pour indice 4." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "A votre avis, qu'a voulu dire l'auteur de ces lignes ? Corriger ce programme." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'j' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mmat\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mj\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mmat\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'j' is not defined" + ] + } + ], + "source": [ + "mat = {}\n", + "for i in range(0,3) and j in range(0,3): # d\u00e9clenche une exception\n", + " mat[i,j] = 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C'est une erreur que je vois souvent chez ceux d\u00e9butent en programmation. On souhaite ici faire une double boucle imbriqu\u00e9e pour remplir le dictionnaire ``mat`` de 0." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "mat = {}\n", + "for i in range(0,3):\n", + " for j in range(0,3):\n", + " mat[i,j] = 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "Ecrire une fonction qui met en majuscule les voyelles d'un mot. \n", + "\n", + "Exemple : python $\\rightarrow$ pYthOn\n", + "\n", + "Il n'existe pas une seule solution pour faire ceci. En voici quelques unes." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pYthOn'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def maj_voy(mot):\n", + " l = []\n", + " for c in mot:\n", + " if c in \"aeiouy\":\n", + " l.append(c.upper())\n", + " else:\n", + " l.append(c)\n", + " return \"\".join(l)\n", + "\n", + "maj_voy(\"python\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pYthOn'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def maj_voy(mot):\n", + " return \"\".join(map(lambda c: c.upper() if c in \"aeiouy\" else c, mot))\n", + "\n", + "maj_voy(\"python\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pYthOn'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def maj_voy(mot):\n", + " return \"\".join( c.upper() if c in \"aeiouy\" else c for c in mot )\n", + "\n", + "maj_voy(\"python\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Enonc\u00e9 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q1\n", + "\n", + "La variable ``i`` est soit 1, soit 2. Que fait le code suivant et comment le simplifier en une ligne ?" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "i = 2\n", + "if i == 2:\n", + " i = 1\n", + "else:\n", + " i = 2\n", + " \n", + "print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'\u00e9nonc\u00e9 \u00e9tait un peu ambig\u00fc mais il fallait que le code fonctionne dans les deux cas : ``i==1`` et ``i==2``" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "i = 3-i\n", + " \n", + "print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "i = i%2 + 1\n", + "\n", + "print(i)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q2\n", + "\n", + "Le programme suivant produit une erreur. Modifier le programme pour qu'il ne la produise plus." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unhashable type: 'dict'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0ml\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mj\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0ml\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: unhashable type: 'dict'" + ] + } + ], + "source": [ + "l = {{}} # d\u00e9clenche une exception\n", + "for i,j in zip(range(0,3), range(0,3)):\n", + " l[i,j] = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La premi\u00e8re ligne contient des doubles accolades sans raison." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "l = {}\n", + "for i,j in zip(range(0,3), range(0,3)):\n", + " l[i,j] = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Q3\n", + "\n", + "Ecrire une fonction qui double toutes les voyelles.\n", + "\n", + "Exemple : python $\\rightarrow$ pyythoon" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pyythoon'" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def double_voy(mot):\n", + " l = []\n", + " for c in mot:\n", + " if c in \"aeiouy\":\n", + " l.append(c*2)\n", + " else:\n", + " l.append(c)\n", + " return \"\".join(l)\n", + "\n", + "double_voy(\"python\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ou plus court encore :" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'pyythoon'" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def double_voy(mot):\n", + " return \"\".join(map(lambda c: c*2 if c in \"aeiouy\" else c, mot))\n", + "\n", + "double_voy(\"python\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2013_bout_de_code_coloriage.ipynb b/_doc/practice/exams/td_note_2013_bout_de_code_coloriage.ipynb new file mode 100644 index 00000000..6baf8b04 --- /dev/null +++ b/_doc/practice/exams/td_note_2013_bout_de_code_coloriage.ipynb @@ -0,0 +1,341 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - TD not\u00e9, 27 novembre 2012 (\u00e9l\u00e9ments de code pour le coloriage)\n", + "\n", + "Coloriage d'une image, dessin d'une spirale avec *matplotlib* : \u00e9l\u00e9ments de code donn\u00e9es avec l'\u00e9nonc\u00e9." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## construction de la spirale\n", + "\n", + "On utilise une repr\u00e9sentation param\u00e9trique de la spirale : [spirale](https://fr.wikipedia.org/wiki/Spirale)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import math\n", + " \n", + "# cette fonction construit deux spirales imbriqu\u00e9es dans une matrice nb x nb\n", + "# le r\u00e9sultat est retourn\u00e9 sous forme de liste de listes\n", + "def construit_matrice (nb) :\n", + " mat = [ [ 0 for x in range (0,nb) ] for y in range(0,nb) ]\n", + " \n", + " def pointij (nb,r,th,mat,c,phase) :\n", + " i,j = r*th * math.cos(th+phase), r*th*math.sin(th+phase)\n", + " i,j = int(i*100/nb), int(j*100/nb)\n", + " i,j = (i+nb)//2, (j+nb)//2\n", + " if 0 <= i < nb and 0 <= j < nb :\n", + " mat[i][j] = c\n", + " return i,j\n", + " \n", + " r = 3.5\n", + " t = 0\n", + " for tinc in range (nb*100000) :\n", + " t += 1.0 * nb / 100000\n", + " th = t * math.pi * 2\n", + " i,j = pointij (nb,r,th,mat,1, 0)\n", + " i,j = pointij (nb,r,th,mat,1, math.pi)\n", + " if i >= nb and j >= nb : break\n", + " \n", + " return mat\n", + "\n", + "matrice = construit_matrice(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## dessin de la spirale" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n99/hOwGtVouamhrH77W1tdBqO5diZrCx2WxYt24dJkyYgFGjRgFgZ/e6PCfXPgAAAdxJREFUujrH\nv5GRkR3cyuBy/vx5FBUVobi4GDRNw2QyYdOmTSFnBztarRbdu3fHwIEDAQBjxoxBfn5+yNnj3Llz\niI2NhVrN1tYYPXo0fv7555CzQ0u47r/leGowGLyOpx2+E0hKSkJVVRWqq6thtVpRUFCAkSNHdnSz\n2pWcnBwkJCRgxowZjr+NGDECJ06cAACcOHGiy9tk/vz5yMnJQXZ2NpYtW4Y777wTS5cuDTk72ImK\nikL37t1x7RpbG+LcuXNISEgIOXv06NEDFy9eBE3TIISErB0IIW47ZK77HzlyJAoLC2G1WqHX61FV\nVYWkpCSP390pMobPnj2LHTt2OMTmQilE9Pz581i7di369u0LiqJAURTmzZuHpKQkvPvuu6ipqUFM\nTAyWL1/eyjnUVSktLcWBAwccIaKhaofLly9j69atsFqtiIuLQ1ZWFhiGCTl77Nu3D4WFhZBKpUhM\nTERmZibMZnPI2GHjxo0oLS2F0WhEZGQk5syZg1GjRnHef15eHo4dOwaZTOZTiGinmARERERERDqG\nDj8OEhERERHpOMRJQERERCSEEScBERERkRBGnAREREREQhhxEhAREREJYcRJQERERCSEEScBERER\nkRBGnAREREREQpj/B22ot3bPBGzfAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def dessin_matrice (matrice) :\n", + " f, ax = plt.subplots()\n", + " ax.set_ylim([0, len(matrice[0])])\n", + " ax.set_xlim([0, len(matrice)])\n", + " colors = { 1: \"blue\", 2:\"red\" }\n", + " for i in range(0,len(matrice)) :\n", + " for j in range (0, len(matrice[i])) :\n", + " if matrice [i][j] in colors : \n", + " ax.plot ([i-0.5,i-0.5,i+0.5,i+0.5,i-0.5,i+0.5,i-0.5,i+0.5], \n", + " [j-0.5,j+0.5,j+0.5,j-0.5,j-0.5,j+0.5,j+0.5,j-0.5], \n", + " colors [ matrice[i][j] ])\n", + " return ax\n", + " \n", + "dessin_matrice(matrice)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ajouter du rouge" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n = len(matrice)\n", + "for i in range(0, n):\n", + " matrice[i][min(n-1, abs(n - 2*i))] = 2\n", + "dessin_matrice(matrice)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2013_coloriage_correction.ipynb b/_doc/practice/exams/td_note_2013_coloriage_correction.ipynb new file mode 100644 index 00000000..fb400f59 --- /dev/null +++ b/_doc/practice/exams/td_note_2013_coloriage_correction.ipynb @@ -0,0 +1,557 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - TD not\u00e9, 27 novembre 2012 (coloriage, correction)\n", + "\n", + "Coloriage d'une image, dessin d'une spirale avec *matplotlib*." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## construction de la spirale\n", + "\n", + "On utilise une repr\u00e9sentation param\u00e9trique de la spirale : [spirale](https://fr.wikipedia.org/wiki/Spirale)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + " \n", + "# cette fonction construit deux spirales imbriqu\u00e9es dans une matrice nb x nb\n", + "# le r\u00e9sultat est retourn\u00e9 sous forme de liste de listes\n", + "def construit_matrice (nb) :\n", + " mat = [ [ 0 for x in range (0,nb) ] for y in range(0,nb) ]\n", + " \n", + " def pointij (nb,r,th,mat,c,phase) :\n", + " i,j = r*th * math.cos(th+phase), r*th*math.sin(th+phase)\n", + " i,j = int(i*100/nb), int(j*100/nb)\n", + " i,j = (i+nb)//2, (j+nb)//2\n", + " if 0 <= i < nb and 0 <= j < nb :\n", + " mat[i][j] = c\n", + " return i,j\n", + " \n", + " r = 3.5\n", + " t = 0\n", + " for tinc in range (nb*100000) :\n", + " t += 1.0 * nb / 100000\n", + " th = t * math.pi * 2\n", + " i,j = pointij (nb,r,th,mat,1, 0)\n", + " i,j = pointij (nb,r,th,mat,1, math.pi)\n", + " if i >= nb and j >= nb : break\n", + " \n", + " return mat\n", + "\n", + "matrice = construit_matrice(100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## dessin de la spirale" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n99/hOwGtVouamhrH77W1tdBqO5diZrCx2WxYt24dJkyYgFGjRgFgZ/e6PCfXPgAAAdxJREFUujrH\nv5GRkR3cyuBy/vx5FBUVobi4GDRNw2QyYdOmTSFnBztarRbdu3fHwIEDAQBjxoxBfn5+yNnj3Llz\niI2NhVrN1tYYPXo0fv7555CzQ0u47r/leGowGLyOpx2+E0hKSkJVVRWqq6thtVpRUFCAkSNHdnSz\n2pWcnBwkJCRgxowZjr+NGDECJ06cAACcOHGiy9tk/vz5yMnJQXZ2NpYtW4Y777wTS5cuDTk72ImK\nikL37t1x7RpbG+LcuXNISEgIOXv06NEDFy9eBE3TIISErB0IIW47ZK77HzlyJAoLC2G1WqHX61FV\nVYWkpCSP390pMobPnj2LHTt2OMTmQilE9Pz581i7di369u0LiqJAURTmzZuHpKQkvPvuu6ipqUFM\nTAyWL1/eyjnUVSktLcWBAwccIaKhaofLly9j69atsFqtiIuLQ1ZWFhiGCTl77Nu3D4WFhZBKpUhM\nTERmZibMZnPI2GHjxo0oLS2F0WhEZGQk5syZg1GjRnHef15eHo4dOwaZTOZTiGinmARERERERDqG\nDj8OEhERERHpOMRJQERERCSEEScBERERkRBGnAREREREQhhxEhAREREJYcRJQERERCSEEScBERER\nkRBGnAREREREQpj/B22ot3bPBGzfAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def dessin_matrice (matrice) :\n", + " f, ax = plt.subplots()\n", + " ax.set_ylim([0, len(matrice[0])])\n", + " ax.set_xlim([0, len(matrice)])\n", + " colors = { 1: \"blue\", 2:\"red\" }\n", + " for i in range(0,len(matrice)) :\n", + " for j in range (0, len(matrice[i])) :\n", + " if matrice [i][j] in colors : \n", + " ax.plot ([i-0.5,i-0.5,i+0.5,i+0.5,i-0.5,i+0.5,i-0.5,i+0.5], \n", + " [j-0.5,j+0.5,j+0.5,j-0.5,j-0.5,j+0.5,j+0.5,j-0.5], \n", + " colors [ matrice[i][j] ])\n", + " return ax\n", + " \n", + "dessin_matrice(matrice)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def voisins_a_valeurs_nulle (matrice,i,j) :\n", + " res = []\n", + " if i > 0 and matrice[i-1][j] == 0 : res.append ( (i-1,j) )\n", + " if i < len(matrice)-1 and matrice[i+1][j] == 0 : res.append ( (i+1,j) )\n", + " if j > 0 and matrice[i][j-1] == 0 : res.append ( (i, j-1) )\n", + " if j < len(matrice[i])-1 and matrice[i][j+1] == 0 : res.append ( (i, j+1) )\n", + " return res" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Q2" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def tous_voisins_a_valeurs_nulle (matrice, liste_points) :\n", + " res = []\n", + " for i,j in liste_points :\n", + " res += voisins_a_valeurs_nulle (matrice, i,j) \n", + " return res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q3" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def fonction_coloriage ( matrice, i0, j0) :\n", + " # \u00e9tage 1\n", + " acolorier = [ ( i0, j0 ) ]\n", + " while len (acolorier) > 0 :\n", + " # \u00e9tape 2\n", + " for i,j in acolorier : \n", + " matrice [i][j] = 2\n", + " # \u00e9tape 3\n", + " acolorier = tous_voisins_a_valeurs_nulle ( matrice, acolorier )\n", + " # on enl\u00e8ve les doublons car sinon cela prend trop de temps\n", + " acolorier = list(set(acolorier))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### version 1" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def surface_coloriee (matrice) :\n", + " surface = 0\n", + " for line in matrice : \n", + " for c in line : \n", + " if c == 2 : surface += 1\n", + " return surface" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### version 4" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def fonction_coloriage_1000 ( matrice, i0, j0) :\n", + " acolorier = [ ( i0, j0 ) ]\n", + " nb = 0 # ligne ajout\u00e9e\n", + " while len (acolorier) > 0 :\n", + " for i,j in acolorier : \n", + " matrice [i][j] = 2\n", + " nb += 1 # ligne ajout\u00e9e\n", + " if nb > 1000 : break # ligne ajout\u00e9e\n", + " acolorier = tous_voisins_a_valeurs_nulle ( matrice, acolorier )\n", + " d = { }\n", + " for i,j in acolorier : d [i,j] = 0\n", + " acolorier = [ (i,j) for i,j in d ]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q4 : spirale" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### version 1" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "matrice = construit_matrice(100)\n", + "fonction_coloriage (matrice, 53, 53)\n", + "dessin_matrice(matrice)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3258" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "surface_coloriee (matrice)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### version 4" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ngg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "matrice = construit_matrice(100)\n", + "fonction_coloriage_1000 (matrice, 53, 53)\n", + "dessin_matrice(matrice)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1002" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "surface_coloriee (matrice)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2015.ipynb b/_doc/practice/exams/td_note_2015.ipynb new file mode 100644 index 00000000..ee7a4410 --- /dev/null +++ b/_doc/practice/exams/td_note_2015.ipynb @@ -0,0 +1,1429 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - TD not\u00e9, 5 d\u00e9cembre 2014\n", + "\n", + "Parcours de chemins dans un graphe acyclique (arbre)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Apr\u00e8s chaque question, on v\u00e9rifie sur un petit exemple que cela fonctionne comme attendu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercice 1\n", + "\n", + "Ce premier exercice aborde la probl\u00e8me d'un parcours de graphe non r\u00e9cursif.\n", + "\n", + "**Q1**" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def adjacence(N):\n", + " # on cr\u00e9e uen matrice vide\n", + " mat = [ [ 0 for j in range(N) ] for i in range(N) ]\n", + " for i in range(0,N-1):\n", + " mat[i][i+1] = 1\n", + " return mat" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[0, 1, 0, 0, 0, 0, 0],\n", + " [0, 0, 1, 0, 0, 0, 0],\n", + " [0, 0, 0, 1, 0, 0, 0],\n", + " [0, 0, 0, 0, 1, 0, 0],\n", + " [0, 0, 0, 0, 0, 1, 0],\n", + " [0, 0, 0, 0, 0, 0, 1],\n", + " [0, 0, 0, 0, 0, 0, 0]]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mat = adjacence(7)\n", + "mat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q2**\n", + "\n", + "Il faut ajouter 5 arcs au hasard en \u00e9vitant d'ajouter deux fois le m\u00eame." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import random\n", + "def ajoute_points(mat,nb=5):\n", + " ajout = { }\n", + " while len(ajout) < 5 :\n", + " i,j = random.randint(0,len(mat)-1),random.randint(0,len(mat)-1)\n", + " if i < j and (i,j) not in ajout:\n", + " mat[i][j] = 1\n", + " ajout[i,j] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[0, 1, 0, 0, 0, 0, 1],\n", + " [0, 0, 1, 0, 0, 0, 1],\n", + " [0, 0, 0, 1, 1, 0, 0],\n", + " [0, 0, 0, 0, 1, 1, 0],\n", + " [0, 0, 0, 0, 0, 1, 0],\n", + " [0, 0, 0, 0, 0, 0, 1],\n", + " [0, 0, 0, 0, 0, 0, 0]]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ajoute_points(mat)\n", + "mat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q3**" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def successeurs(adj,i):\n", + " ligne = adj[i]\n", + " # dans l'expression suivante, \n", + " # s est la valeur de la matrice (0 ou 1)\n", + " # i l'indice\n", + " return [ i for i,s in enumerate(ligne) if s == 1 ]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2, 6]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "successeurs(mat, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q4**" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def successeurs_dico(adj):\n", + " return { i:successeurs(adj, i) for i in range(len(adj)) }" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{0: [1, 6], 1: [2, 6], 2: [3, 4], 3: [4, 5], 4: [5], 5: [6], 6: []}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dico = successeurs_dico(mat)\n", + "dico" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q5**" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def suites_chemin(chemin, dico):\n", + " dernier = chemin[-1]\n", + " res = [ ]\n", + " for s in dico[dernier]:\n", + " res.append ( chemin + [ s ] )\n", + " return res" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[0, 1, 2], [0, 1, 6]]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "suites_chemin( [ 0, 1 ], dico)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q6**" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def parcours(adj):\n", + " dico = successeurs_dico(adj)\n", + " chemins = [ [ 0 ]]\n", + " resultat = [ ]\n", + " while len(chemins) > 0 :\n", + " chemins2 = []\n", + " for chemin in chemins :\n", + " res = suites_chemin(chemin, dico)\n", + " if len(res) == 0:\n", + " # chemin est un chemin qui ne peut \u00eatre continu\u00e9\n", + " resultat.append ( chemin )\n", + " else:\n", + " chemins2.extend ( res ) \n", + " chemins = chemins2\n", + " return resultat" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[0, 6],\n", + " [0, 1, 6],\n", + " [0, 1, 2, 3, 5, 6],\n", + " [0, 1, 2, 4, 5, 6],\n", + " [0, 1, 2, 3, 4, 5, 6]]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parcours(mat)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q7**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La diff\u00e9rence entre un parcours en profondeur et un parcours en largeur tient au fait qu'on pr\u00e9f\u00e8re d'abord explorer le successeur direct, puis le successeur direct plut\u00f4t que les voisins du successeurs directe. Dans le premier cas, on aboutit tr\u00e8s vite \u00e0 un chemin termin\u00e9. Dans le second cas, on obtient les chemins plut\u00f4t vers la fin de l'algorithme. Dans la version propos\u00e9e par l'algorithme, c'est un **parcours en largeur** qui est impl\u00e9ment\u00e9." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q8**\n", + "\n", + "La matrice en question est la suivante (pour $N=7$) :" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[0, 1, 1, 1, 1, 1, 1],\n", + " [0, 0, 1, 1, 1, 1, 1],\n", + " [0, 0, 0, 1, 1, 1, 1],\n", + " [0, 0, 0, 0, 1, 1, 1],\n", + " [0, 0, 0, 0, 0, 1, 1],\n", + " [0, 0, 0, 0, 0, 0, 1],\n", + " [0, 0, 0, 0, 0, 0, 0]]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def adjacence8(N):\n", + " # on cr\u00e9e uen matrice vide\n", + " mat = [ [ 0 for j in range(N) ] for i in range(N) ]\n", + " for i in range(0,N-1):\n", + " for j in range(i+1,N):\n", + " mat[i][j] = 1\n", + " return mat\n", + "\n", + "adj = adjacence8(7)\n", + "adj" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nombre 32\n" + ] + }, + { + "data": { + "text/plain": [ + "[[0, 6],\n", + " [0, 1, 6],\n", + " [0, 2, 6],\n", + " [0, 3, 6],\n", + " [0, 4, 6],\n", + " [0, 5, 6],\n", + " [0, 1, 2, 6],\n", + " [0, 1, 3, 6],\n", + " [0, 1, 4, 6],\n", + " [0, 1, 5, 6],\n", + " [0, 2, 3, 6],\n", + " [0, 2, 4, 6],\n", + " [0, 2, 5, 6],\n", + " [0, 3, 4, 6],\n", + " [0, 3, 5, 6],\n", + " [0, 4, 5, 6],\n", + " [0, 1, 2, 3, 6],\n", + " [0, 1, 2, 4, 6],\n", + " [0, 1, 2, 5, 6],\n", + " [0, 1, 3, 4, 6],\n", + " [0, 1, 3, 5, 6],\n", + " [0, 1, 4, 5, 6],\n", + " [0, 2, 3, 4, 6],\n", + " [0, 2, 3, 5, 6],\n", + " [0, 2, 4, 5, 6],\n", + " [0, 3, 4, 5, 6],\n", + " [0, 1, 2, 3, 4, 6],\n", + " [0, 1, 2, 3, 5, 6],\n", + " [0, 1, 2, 4, 5, 6],\n", + " [0, 1, 3, 4, 5, 6],\n", + " [0, 2, 3, 4, 5, 6],\n", + " [0, 1, 2, 3, 4, 5, 6]]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "che = parcours(adj)\n", + "print(\"nombre\",len(che))\n", + "che" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On fait une petite boucle pour intuiter le r\u00e9sultat :" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5 --> 8\n", + "6 --> 16\n", + "7 --> 32\n", + "8 --> 64\n", + "9 --> 128\n", + "10 --> 256\n" + ] + } + ], + "source": [ + "for i in range(5,11):\n", + " adj = adjacence8(i)\n", + " che = parcours(adj)\n", + " print(i, \"-->\",len(che))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Cela ressemble beaucoup \u00e0 des puissances de deux. Cela sugg\u00e8re un raisonnement par r\u00e9currence. Chaque noeud $i$ est connect\u00e9 \u00e0 tous les suivantes $i+1$, $i+2$... On remarque que tous les chemins se termine par le dernier noeud $n$. Lorsqu'on ajoute le noeud $n+1$ au graphe, il sera le successeur de tous les autres. Pour un chemin donn\u00e9, on peut soit l'ajouter \u00e0 la fin, soit remplacer le dernier noeud $n$ par $n-1$. C'est ainsi qu'on multiplie par deux le nombre de chemins. S'il y a $n$ noeuds, on obtient $2^{n-2}$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercice 2\n", + "\n", + "On suppose qu'on dispose d'un tableau de nombres non tri\u00e9. Ecrire une fonction qui retourne les trois \u00e9l\u00e9ments minimaux.\n", + "\n", + "La premi\u00e8re option consiste \u00e0 utiliser la fonction [sort](https://docs.python.org/3.4/library/stdtypes.html?highlight=list#list.sort). Celle-ci a un co\u00fbt de $O(n \\ln n)$ le programme est tr\u00e8s simple." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[-1, 1, 4]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l = [ -1, 4, 6, 4, 1, 9, 5 ]\n", + "l.sort()\n", + "l[:3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le probl\u00e8me qu'on cherche \u00e0 r\u00e9soudre est plus simple puisqu'il s'agit de ne garder que les trois premiers \u00e9l\u00e9ments. On n'a pas besoin de trier la fin de la liste. L'id\u00e9e consiste \u00e0 parcourir le tableau et \u00e0 ne conserver que les trois premiers \u00e9l\u00e9ments. Si un \u00e9l\u00e9ment est plus grand que le troisi\u00e8me \u00e9l\u00e9ment, on ne s'en occupe pas." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[-1, 1, 4]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def garde_3_element(tab):\n", + " meilleur = [ ]\n", + " for t in tab:\n", + " if len(meilleur) < 3 :\n", + " meilleur.append(t)\n", + " meilleur.sort()\n", + " elif t < meilleur[2] :\n", + " meilleur[2] = t\n", + " meilleur.sort()\n", + " return meilleur\n", + "\n", + "garde_3_element(l)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "M\u00eame si on utilise un tri, le co\u00fbt est en en $O(n)$ car le tri op\u00e8re sur au plus trois \u00e9l\u00e9ments." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercice 3\n", + "\n", + "**Q1**" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def word2dict(mot):\n", + " return { i: mot[:i] for i in range(len(mot)+1) }" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "({0: '', 1: 'm', 2: 'mo', 3: 'mot'},\n", + " {0: '', 1: 'p', 2: 'py', 3: 'pyt', 4: 'pyth', 5: 'pytho', 6: 'python'})" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "word2dict(\"mot\"), word2dict(\"python\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q2**" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def two_words2dict(d1,d2):\n", + " return { (i,j): (d1[i],d2[j]) for i in d1 for j in d2 }" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(1, 2): ('p', 'pi'),\n", + " (3, 2): ('pyt', 'pi'),\n", + " (0, 0): ('', ''),\n", + " (5, 0): ('pytho', ''),\n", + " (6, 4): ('python', 'pito'),\n", + " (3, 0): ('pyt', ''),\n", + " (0, 4): ('', 'pito'),\n", + " (5, 4): ('pytho', 'pito'),\n", + " (1, 4): ('p', 'pito'),\n", + " (6, 0): ('python', ''),\n", + " (5, 5): ('pytho', 'piton'),\n", + " (1, 3): ('p', 'pit'),\n", + " (0, 5): ('', 'piton'),\n", + " (2, 1): ('py', 'p'),\n", + " (5, 1): ('pytho', 'p'),\n", + " (4, 2): ('pyth', 'pi'),\n", + " (2, 5): ('py', 'piton'),\n", + " (1, 0): ('p', ''),\n", + " (6, 5): ('python', 'piton'),\n", + " (3, 5): ('pyt', 'piton'),\n", + " (0, 1): ('', 'p'),\n", + " (5, 3): ('pytho', 'pit'),\n", + " (4, 1): ('pyth', 'p'),\n", + " (0, 2): ('', 'pi'),\n", + " (3, 3): ('pyt', 'pit'),\n", + " (1, 5): ('p', 'piton'),\n", + " (3, 4): ('pyt', 'pito'),\n", + " (6, 1): ('python', 'p'),\n", + " (3, 1): ('pyt', 'p'),\n", + " (5, 2): ('pytho', 'pi'),\n", + " (4, 4): ('pyth', 'pito'),\n", + " (1, 1): ('p', 'p'),\n", + " (6, 3): ('python', 'pit'),\n", + " (2, 0): ('py', ''),\n", + " (6, 2): ('python', 'pi'),\n", + " (4, 3): ('pyth', 'pit'),\n", + " (2, 2): ('py', 'pi'),\n", + " (4, 5): ('pyth', 'piton'),\n", + " (2, 3): ('py', 'pit'),\n", + " (4, 0): ('pyth', ''),\n", + " (0, 3): ('', 'pit'),\n", + " (2, 4): ('py', 'pito')}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mot1 = \"python\"\n", + "mot2 = \"piton\"\n", + "d1 = word2dict(mot1)\n", + "d2 = word2dict(mot2)\n", + "vertices = two_words2dict(d1,d2)\n", + "vertices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q3**\n", + "\n", + "Il y a autant d'\u00e9l\u00e9ments que $(len(mot1) +1)*(len(mot2)+1)$ puisqu'on fait une double boucle sur toutes les positions + 1 pour 0. Donc $(p+1)(q+1)$ si $p$ et $q$ sont les tailles des deux mots." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(42, 42)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(vertices),(len(mot1)+1)*(len(mot2)+1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q4**" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def add_edge_hv(vertices):\n", + " edges = { }\n", + " for edge1 in vertices:\n", + " i1,j1 = edge1\n", + " for edge2 in vertices:\n", + " i2,j2 = edge2\n", + " if (i2-i1==1 and j1==j2) or (j2-j1==1 and i1==i2) :\n", + " edges[ edge1,edge2 ] = 1\n", + " return edges" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{((5, 5), (6, 5)): 1,\n", + " ((2, 1), (3, 1)): 1,\n", + " ((5, 0), (5, 1)): 1,\n", + " ((1, 4), (2, 4)): 1,\n", + " ((6, 2), (6, 3)): 1,\n", + " ((0, 3), (1, 3)): 1,\n", + " ((2, 1), (2, 2)): 1,\n", + " ((5, 3), (6, 3)): 1,\n", + " ((5, 4), (6, 4)): 1,\n", + " ((1, 1), (2, 1)): 1,\n", + " ((4, 0), (5, 0)): 1,\n", + " ((1, 1), (1, 2)): 1,\n", + " ((1, 0), (2, 0)): 1,\n", + " ((2, 2), (2, 3)): 1,\n", + " ((1, 5), (2, 5)): 1,\n", + " ((4, 1), (5, 1)): 1,\n", + " ((3, 3), (3, 4)): 1,\n", + " ((1, 2), (2, 2)): 1,\n", + " ((0, 4), (0, 5)): 1,\n", + " ((1, 4), (1, 5)): 1,\n", + " ((4, 5), (5, 5)): 1,\n", + " ((3, 5), (4, 5)): 1,\n", + " ((2, 4), (2, 5)): 1,\n", + " ((4, 2), (4, 3)): 1,\n", + " ((3, 0), (3, 1)): 1,\n", + " ((4, 3), (5, 3)): 1,\n", + " ((6, 1), (6, 2)): 1,\n", + " ((5, 2), (6, 2)): 1,\n", + " ((2, 5), (3, 5)): 1,\n", + " ((0, 4), (1, 4)): 1,\n", + " ((3, 3), (4, 3)): 1,\n", + " ((1, 2), (1, 3)): 1,\n", + " ((0, 1), (1, 1)): 1,\n", + " ((4, 2), (5, 2)): 1,\n", + " ((3, 1), (3, 2)): 1,\n", + " ((2, 0), (2, 1)): 1,\n", + " ((5, 1), (6, 1)): 1,\n", + " ((2, 4), (3, 4)): 1,\n", + " ((4, 0), (4, 1)): 1,\n", + " ((3, 2), (4, 2)): 1,\n", + " ((4, 4), (4, 5)): 1,\n", + " ((1, 0), (1, 1)): 1,\n", + " ((2, 3), (2, 4)): 1,\n", + " ((3, 1), (4, 1)): 1,\n", + " ((5, 2), (5, 3)): 1,\n", + " ((6, 0), (6, 1)): 1,\n", + " ((6, 3), (6, 4)): 1,\n", + " ((2, 3), (3, 3)): 1,\n", + " ((0, 2), (1, 2)): 1,\n", + " ((4, 3), (4, 4)): 1,\n", + " ((0, 0), (1, 0)): 1,\n", + " ((4, 1), (4, 2)): 1,\n", + " ((5, 4), (5, 5)): 1,\n", + " ((1, 3), (1, 4)): 1,\n", + " ((3, 4), (3, 5)): 1,\n", + " ((3, 4), (4, 4)): 1,\n", + " ((5, 0), (6, 0)): 1,\n", + " ((0, 0), (0, 1)): 1,\n", + " ((0, 1), (0, 2)): 1,\n", + " ((4, 4), (5, 4)): 1,\n", + " ((1, 3), (2, 3)): 1,\n", + " ((2, 0), (3, 0)): 1,\n", + " ((3, 0), (4, 0)): 1,\n", + " ((0, 3), (0, 4)): 1,\n", + " ((2, 2), (3, 2)): 1,\n", + " ((3, 2), (3, 3)): 1,\n", + " ((0, 5), (1, 5)): 1,\n", + " ((5, 3), (5, 4)): 1,\n", + " ((6, 4), (6, 5)): 1,\n", + " ((0, 2), (0, 3)): 1,\n", + " ((5, 1), (5, 2)): 1}" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "edges = add_edge_hv(vertices)\n", + "edges" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q5**\n", + "\n", + "Pour chaque noeud, on ajoute deux arcs except\u00e9 les noeuds qui correspond \u00e0 la fin des mots. Donc $2(p+1)(q+1)-(p+1)-(q+1)=2pq+p+q$." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(71, 71)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(edges), 2*len(mot1)*len(mot2)+len(mot1)+len(mot2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q6**\n", + "\n", + "On s'inspire de la fonction pr\u00e9c\u00e9dente. Il serait plus efficace de les fusionner." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def cout(m1,m2):\n", + " c1 = m1[-1]\n", + " c2 = m2[-1]\n", + " if c1==c2 : return 0\n", + " else : return 1\n", + "\n", + "def ajoute_diagonale(edges, vertices):\n", + " # edges = { } # on n'ajoute surtout pas cette ligne, sinon c'est comme si on effa\u00e7ait tout ce que contient\n", + " # edges\n", + " for edge1 in vertices:\n", + " i1,j1 = edge1\n", + " for edge2 in vertices:\n", + " i2,j2 = edge2\n", + " if i2-i1==1 and j2-j1==1 :\n", + " edges[ edge1,edge2 ] = cout (vertices [ edge2 ][0], vertices [ edge2 ][1] )" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{((2, 1), (3, 1)): 1,\n", + " ((5, 0), (5, 1)): 1,\n", + " ((5, 4), (6, 5)): 0,\n", + " ((3, 3), (4, 4)): 1,\n", + " ((6, 1), (6, 2)): 1,\n", + " ((5, 4), (6, 4)): 1,\n", + " ((2, 3), (3, 4)): 1,\n", + " ((2, 0), (2, 1)): 1,\n", + " ((0, 0), (1, 1)): 0,\n", + " ((1, 1), (2, 1)): 1,\n", + " ((3, 1), (4, 2)): 1,\n", + " ((2, 4), (2, 5)): 1,\n", + " ((0, 4), (0, 5)): 1,\n", + " ((1, 4), (1, 5)): 1,\n", + " ((3, 5), (4, 5)): 1,\n", + " ((0, 4), (1, 5)): 1,\n", + " ((0, 5), (1, 5)): 1,\n", + " ((3, 0), (3, 1)): 1,\n", + " ((5, 1), (6, 2)): 1,\n", + " ((2, 2), (2, 3)): 1,\n", + " ((0, 4), (1, 4)): 1,\n", + " ((4, 0), (5, 1)): 1,\n", + " ((3, 3), (4, 3)): 1,\n", + " ((1, 2), (1, 3)): 1,\n", + " ((1, 4), (2, 4)): 1,\n", + " ((2, 4), (3, 4)): 1,\n", + " ((0, 1), (1, 2)): 1,\n", + " ((4, 4), (4, 5)): 1,\n", + " ((2, 4), (3, 5)): 1,\n", + " ((3, 1), (4, 1)): 1,\n", + " ((3, 4), (3, 5)): 1,\n", + " ((1, 1), (1, 2)): 1,\n", + " ((2, 3), (3, 3)): 1,\n", + " ((1, 4), (2, 5)): 1,\n", + " ((0, 2), (1, 2)): 1,\n", + " ((0, 0), (1, 0)): 1,\n", + " ((5, 4), (5, 5)): 1,\n", + " ((5, 2), (5, 3)): 1,\n", + " ((2, 2), (3, 3)): 0,\n", + " ((5, 0), (6, 0)): 1,\n", + " ((3, 4), (4, 4)): 1,\n", + " ((5, 1), (6, 1)): 1,\n", + " ((0, 1), (1, 1)): 1,\n", + " ((3, 0), (4, 0)): 1,\n", + " ((0, 3), (0, 4)): 1,\n", + " ((2, 2), (3, 2)): 1,\n", + " ((3, 2), (4, 3)): 1,\n", + " ((4, 2), (5, 2)): 1,\n", + " ((5, 3), (5, 4)): 1,\n", + " ((5, 0), (6, 1)): 1,\n", + " ((6, 0), (6, 1)): 1,\n", + " ((5, 2), (6, 2)): 1,\n", + " ((5, 5), (6, 5)): 1,\n", + " ((2, 0), (3, 1)): 1,\n", + " ((4, 2), (5, 3)): 1,\n", + " ((6, 2), (6, 3)): 1,\n", + " ((4, 3), (5, 4)): 0,\n", + " ((0, 2), (1, 3)): 1,\n", + " ((5, 3), (6, 3)): 1,\n", + " ((1, 5), (2, 5)): 1,\n", + " ((4, 0), (5, 0)): 1,\n", + " ((1, 0), (2, 1)): 1,\n", + " ((1, 0), (2, 0)): 1,\n", + " ((1, 3), (2, 4)): 1,\n", + " ((2, 1), (3, 2)): 1,\n", + " ((2, 1), (2, 2)): 1,\n", + " ((1, 2), (2, 2)): 1,\n", + " ((5, 3), (6, 4)): 1,\n", + " ((4, 1), (5, 1)): 1,\n", + " ((3, 1), (3, 2)): 1,\n", + " ((0, 3), (1, 3)): 1,\n", + " ((3, 4), (4, 5)): 1,\n", + " ((2, 3), (2, 4)): 1,\n", + " ((3, 0), (4, 1)): 1,\n", + " ((4, 3), (5, 3)): 1,\n", + " ((4, 0), (4, 1)): 1,\n", + " ((6, 4), (6, 5)): 1,\n", + " ((0, 3), (1, 4)): 1,\n", + " ((5, 2), (6, 3)): 1,\n", + " ((1, 0), (1, 1)): 1,\n", + " ((6, 3), (6, 4)): 1,\n", + " ((1, 1), (2, 2)): 1,\n", + " ((4, 3), (4, 4)): 1,\n", + " ((4, 4), (5, 5)): 1,\n", + " ((3, 3), (3, 4)): 1,\n", + " ((2, 5), (3, 5)): 1,\n", + " ((4, 1), (4, 2)): 1,\n", + " ((1, 3), (1, 4)): 1,\n", + " ((4, 2), (4, 3)): 1,\n", + " ((1, 2), (2, 3)): 1,\n", + " ((0, 0), (0, 1)): 1,\n", + " ((0, 1), (0, 2)): 1,\n", + " ((4, 4), (5, 4)): 1,\n", + " ((4, 1), (5, 2)): 1,\n", + " ((1, 3), (2, 3)): 1,\n", + " ((2, 0), (3, 0)): 1,\n", + " ((3, 2), (3, 3)): 1,\n", + " ((3, 2), (4, 2)): 1,\n", + " ((4, 5), (5, 5)): 1,\n", + " ((0, 2), (0, 3)): 1,\n", + " ((5, 1), (5, 2)): 1}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ajoute_diagonale(edges, vertices)\n", + "edges" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q7**\n", + "\n", + "L'algorithme du plus court chemin." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def loop_on_edges(distance, edges):\n", + " for edge,cout in edges.items() :\n", + " v1,v2 = edge\n", + " if v1 in distance and (v2 not in distance or distance[v2] > distance[v1] + cout) :\n", + " distance[v2] = distance[v1] + cout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q8**\n", + "\n", + "La question \u00e9tait sans doute un peu mal pos\u00e9 car il est beaucoup plus facile pour la fonction ``loop_on_edges`` de savoir si le dictionnaire ``distance`` est modifi\u00e9 ou non. On la modifie pour qu'elle retourne le nombre de mises \u00e0 jour." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def loop_on_edges(distance, edges):\n", + " misejour = 0\n", + " for edge,cout in edges.items() :\n", + " v1,v2 = edge\n", + " if v1 in distance and (v2 not in distance or distance[v2] > distance[v1] + cout) :\n", + " distance[v2] = distance[v1] + cout\n", + " misejour += 1\n", + " return misejour" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Puis l'algorithme final :" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plus_court_chemin(edges):\n", + " distance = { (0,0): 0 }\n", + " m = 1\n", + " while m > 0:\n", + " m = loop_on_edges(distance, edges)\n", + " return distance" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(0, 1): 1,\n", + " (3, 2): 2,\n", + " (0, 0): 0,\n", + " (5, 0): 5,\n", + " (6, 4): 3,\n", + " (3, 0): 3,\n", + " (0, 4): 4,\n", + " (5, 4): 2,\n", + " (2, 1): 1,\n", + " (6, 0): 6,\n", + " (5, 5): 3,\n", + " (2, 5): 4,\n", + " (1, 3): 2,\n", + " (2, 3): 2,\n", + " (1, 4): 3,\n", + " (2, 4): 3,\n", + " (4, 2): 3,\n", + " (1, 0): 1,\n", + " (0, 3): 3,\n", + " (6, 5): 2,\n", + " (3, 5): 3,\n", + " (1, 2): 1,\n", + " (5, 1): 4,\n", + " (5, 3): 3,\n", + " (3, 3): 1,\n", + " (1, 5): 4,\n", + " (4, 1): 3,\n", + " (6, 1): 5,\n", + " (3, 1): 2,\n", + " (5, 2): 4,\n", + " (4, 4): 2,\n", + " (1, 1): 0,\n", + " (6, 3): 4,\n", + " (2, 0): 2,\n", + " (6, 2): 5,\n", + " (4, 3): 2,\n", + " (2, 2): 1,\n", + " (4, 5): 3,\n", + " (0, 5): 5,\n", + " (4, 0): 4,\n", + " (3, 4): 2,\n", + " (0, 2): 2}" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resultat = plus_court_chemin(edges)\n", + "resultat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Q9**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comme on a tout fait avec ces deux mots, il suffit de prendre la bonne valeur dans le tableau distance :" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "python piton\n" + ] + }, + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(mot1,mot2)\n", + "resultat [ len(mot1), len(mot2) ]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercice 4\n", + "\n", + "On a un tableau d'entiers ``l = [1, 8, 5, 7, 3, 6, 9]``. On veut placer les entiers pairs en premiers et les entiers impairs en derniers : ``8, 6, 1, 5, 7, 3, 9``. Ecrire une fonction qui fait cela.\n", + "\n", + "Le co\u00fbt d'un tri est de $O(n \\ln n)$. On construit d'abord le couple *(parit\u00e9, \u00e9l\u00e9ment)* pour chaque \u00e9l\u00e9ment puis on trie de table. C'est la solution la plus simple." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[6, 8, 1, 3, 5, 7, 9]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l = [1, 8, 5, 7, 3, 6, 9]\n", + "l2 = [ (i%2, i) for i in l]\n", + "l2.sort()\n", + "res = [ b for a,b in l2 ]\n", + "res" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans cas pr\u00e9cis, on ne souhaite pas trier sur les nombres mais sur leur parit\u00e9. En quelque sorte, on ne s'int\u00e9resse pas de savoir dans quel ordre deux nombres pairs seront tri\u00e9s. Cela r\u00e9duit le nombre d'op\u00e9rations \u00e0 effectuer. Une id\u00e9e consiste \u00e0 parcourir le tableau par les deux bouts et \u00e0 \u00e9changer deux nombres d\u00e8s que leur parit\u00e9 sont mal class\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[8, 6, 5, 3, 7, 9, 1]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def trie_parite(l):\n", + " i = 0\n", + " j = len(l)-1\n", + " while i < j :\n", + " while i < j and l[i]%2 == 0 : i += 1\n", + " while i < j and l[j]%2 == 1 : j -= 1\n", + " if i < j:\n", + " ech = l[i]\n", + " l[i] = l[j]\n", + " l[j] = ech\n", + " i += 1\n", + " j -= 1\n", + " \n", + "l = l.copy()\n", + "trie_parite(l)\n", + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2015_rattrapage_enonce.ipynb b/_doc/practice/exams/td_note_2015_rattrapage_enonce.ipynb new file mode 100644 index 00000000..c00aacf8 --- /dev/null +++ b/_doc/practice/exams/td_note_2015_rattrapage_enonce.ipynb @@ -0,0 +1,277 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - TD not\u00e9 2015 rattrapage (\u00e9nonc\u00e9, \u00e9crit et oral)\n", + "\n", + "Questions pos\u00e9es \u00e0 l'oral autour du jeu 2048 et d'un exercice Google Jam sur le position de carreaux dans un plus grand carr\u00e9 : [Problem D. Cut Tiles](https://code.google.com/codejam/contest/3214486/dashboard#s=p3)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Question 1\n", + "\n", + "On s'int\u00e9resse \u00e0 une phase du jeu [2048](http://gabrielecirulli.github.io/2048/). On part d'une grille :" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 0, 0, 4]\n", + "[0, 2, 8, 2]\n", + "[0, 2, 4, 2]\n", + "[2, 2, 8, 0]\n" + ] + } + ], + "source": [ + "mat = [[2,0,0,4],[0,2,8,2],[0,2,4,2],[2,2,8,0],]\n", + "for m in mat:\n", + " print(m)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On veut \u00e9crire une fonction qui calcule l'\u00e9tat du jeu apr\u00e8s la pression de la touche ``bas``." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Question 2\n", + "\n", + "Modifier la fonction pour g\u00e9rer les quatre directions." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Question 3\n", + "\n", + "Remplir deux cases vides choisies al\u00e9atoirement avec deux chiffres 2." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Question 4\n", + "\n", + "Proposer des solutions pour le probl\u00e8me [Problem D. Cut Tiles](https://code.google.com/codejam/contest/3214486/dashboard#s=p3). On n'impl\u00e9mentera pas ces solutions." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2016.ipynb b/_doc/practice/exams/td_note_2016.ipynb new file mode 100644 index 00000000..ece0fe81 --- /dev/null +++ b/_doc/practice/exams/td_note_2016.ipynb @@ -0,0 +1,1157 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - TD not\u00e9, 11 d\u00e9cembre 2015\n", + "\n", + "Calcul des int\u00e9r\u00eat d'un emprunt pour acheter un appartement, strat\u00e9gie d'investissement." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Populating the interactive namespace from numpy and matplotlib\n" + ] + } + ], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Apr\u00e8s chaque question, on v\u00e9rifie sur un petit exemple que cela fonctionne comme attendu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 1 : Louer ou acheter un appartement ? \n", + "\n", + "A surface \u00e9gale, est-il pr\u00e9f\u00e9rable de louer ou d'acheter son appartement~? Cet exercice propose diff\u00e9rentes questions afin d'y r\u00e9pondre." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1 \n", + "\n", + "On suppose qu'on a $X$ euros d'apport, \u00e9crire une fonction qui calcule la somme d'argent obtenue apr\u00e8s $n$ ann\u00e9es d'un placement \u00e0 *r%* ? Par exemple, pour $n=2$, la fonction retourne $x + rx + r(1+r)x = (1+r)^2 x$." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0404" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def rendement(x, n, r):\n", + " return x*(1+r)**n\n", + "\n", + "rendement(1, 2, 0.02)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0612080000000002" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rendement(1, 3, 0.02)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2\n", + "\n", + "Une banque pr\u00eate de l'argent \u00e0 un taux annuel $p$, c'est-\u00e0-dire au taux mensuel $m=(1+p)^\\frac{1}{12}-1$. Ce taux s'applique chaque mois sur la somme du capital restant \u00e0 rembourser. On emprunte $K$ euros avec une mensualit\u00e9 fix\u00e9e \u00e0 $M$ euros, \u00e9crire une fonction qui d\u00e9compose la mensualit\u00e9 $M$ en capital rembours\u00e9 et int\u00e9r\u00eat." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(570.6769646931234, 429.32303530687665)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def decompose_mensualite(K,M,p):\n", + " i = K * ((1+p)**(1.0/12)-1)\n", + " return M-i, i\n", + "\n", + "decompose_mensualite(180000, 1000, 0.029)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3 \n", + "\n", + "Ecrire une fonction qui calcule toutes les mensualit\u00e9s.\n", + "\n", + "Lors d'un pr\u00eat \u00e0 taux fixe, en France tout du moins, ce que paye l'emprunteur \u00e0 sa banque est un montant fixe par mois : la mensualit\u00e9. L'emprunteur paye le m\u00eame montant chaque mois. Chaque mensualit\u00e9 se d\u00e9compose comme suit :\n", + "\n", + "* les int\u00earets correspondant \u00e0 la somme $K$ pour un mois : $i=Km$ o\u00f9 $m=(1+p)^{\\frac{1}{12}}-1$\n", + "* la partie servant \u00e0 rembourser le capital : $cap=M-i$\n", + "\n", + "Cette partie $cap$ va \u00eatre \u00f4t\u00e9e au capital $K$ \u00e0 rembourser de sorte que le mois prochain, la somme pr\u00eat\u00e9e pour le mois sera moindre. Le r\u00e9sulat souhait\u00e9 pour cette question est une liste qui contient ce m\u00eame montant $M$ $n$ fois. Ce $n$ correspond \u00e0 la longueur du pr\u00eat. Et pour \u00eatre plus pr\u00e9cis, le m\u00eame montant $M$ r\u00e9p\u00e9t\u00e9 $n$ fois except\u00e9 pour la derni\u00e8re mensualit\u00e9." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "19.666666666666668" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def mensualites(K,M,p):\n", + " res = []\n", + " while K > 0:\n", + " cap, i = decompose_mensualite(K,M,p)\n", + " if cap < 0:\n", + " raise Exception(\"probl\u00e8me avec K={0} cap={1} i={2} len={3}\".format(K,cap,i,len(res)))\n", + " K -= cap\n", + " if K < 0:\n", + " res.append(M + K)\n", + " else:\n", + " res.append(M)\n", + " return res\n", + "\n", + "len(mensualites(180000,1000,0.029))/12" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mens = mensualites(180000,1000,0.029)\n", + "mens[:12]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1000, 1000, 1000, 1000, 1000, 459.63104825975415]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mens[-6:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Parfois ce calcul entre dans une boucle infinie : cela signifie que la somme $K$ ou le taux d'int\u00e9ret est trop grand pour la mensualit\u00e9 $M$. Par cons\u00e9quence, les int\u00e9r\u00eats \u00e0 rembourser chaque mois d\u00e9passe la mensualit\u00e9. Le capital \u00e0 rembourser, plut\u00f4t que de d\u00e9cro\u00eetre augmente. La boucle infinie signifie que l'emprunteur a emprunt\u00e9 une somme au-dessus de ses moyens." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4\n", + "\n", + "Un emprunteur souhaite contracter un emprunt pour $Y$ ann\u00e9es. La mensualit\u00e9 maximum qu'il peut consacrer par mois est $M$, le taux de l'emprunt est $p$. Quelle est la somme maximale qu'on puisse emprunter ? On se contentera d'une valeur approch\u00e9e \u00e0 1000 euros pr\u00e8s.\n", + "\n", + "La fonction pr\u00e9c\u00e9dente estime la dur\u00e9e du pr\u00eat. Moins on emprunte, moins la dur\u00e9e est longue. On n'a pas besoin de 20 ans pour emprunter 1000\u20ac. L'id\u00e9e consiste simplement \u00e0 tester de 1000 en 1000 toutes les sommes jusqu'\u00e0 ce que la dur\u00e9e du pr\u00eat d\u00e9passe $Y$ ann\u00e9e soit $12Y$ mois." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "183000" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_maximale(M,p,Y):\n", + " K = 20000\n", + " l = mensualites(K, M, p)\n", + " while len(l) < Y*12:\n", + " K += 1000\n", + " l = mensualites(K, M, p)\n", + " return K\n", + " \n", + "somme_maximale(1000, 0.029, 20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque :** On pouvait \u00e9galement chercher la somme maximale au del\u00e0 de laquelle le capital \u00e0 rembourser augmente car la mensualit\u00e9 est utilis\u00e9e int\u00e9gralement pour payer les int\u00e9rets. C'est-\u00e0-dire que la fonction ``decompose_mensualite`` retourne une valeur n\u00e9gative ou nulle soit la valeur de $K$ telle que $M = K \\left ( (1+p)^{\\frac{1}{12}}-1 \\right)$. Dans ce cas, c'est comme si la dur\u00e9e du pr\u00eat devenait infinie. Cette somme est n\u00e9cessairement sup\u00e9rieur \u00e0 la valeur cherch\u00e9e qui correspond \u00e0 une dur\u00e9e de pr\u00eat finie." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque :** Est-on s\u00fbr que la longueur des bien ``Y*12`` ? \n", + " \n", + "En effet, rien de le garantit. Il faudrait s'assurer que le nombre de mensualit\u00e9s ne saute pas des ann\u00e9es comme la version suivante o\u00f9 on passe 10000 en 10000 et la valeur est" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K 140000 mois 171 ann\u00e9es 14\n", + "K 150000 mois 186 ann\u00e9es 15\n", + "K 160000 mois 202 ann\u00e9es 16\n", + "K 170000 mois 219 ann\u00e9es 18\n", + "K 180000 mois 236 ann\u00e9es 19\n", + "K 190000 mois 254 ann\u00e9es 21\n" + ] + }, + { + "data": { + "text/plain": [ + "190000" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_maximale_step(M,p,Y,step=10000):\n", + " K = 20000\n", + " l = mensualites(K, M, p)\n", + " while len(l) < Y*12:\n", + " K += step\n", + " l = mensualites(K, M, p)\n", + " if len(l) >= (Y-3)*10:\n", + " print(\"K\", K,\"mois\", len(l), \"ann\u00e9es\", len(l)//12)\n", + " return K\n", + " \n", + "somme_maximale_step(1000, 0.029, 20)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K 139000 mois 170 ann\u00e9es 14\n", + "K 140000 mois 171 ann\u00e9es 14\n", + "K 141000 mois 173 ann\u00e9es 14\n", + "K 142000 mois 174 ann\u00e9es 14\n", + "K 143000 mois 176 ann\u00e9es 14\n", + "K 144000 mois 177 ann\u00e9es 14\n", + "K 145000 mois 179 ann\u00e9es 14\n", + "K 146000 mois 180 ann\u00e9es 15\n", + "K 147000 mois 182 ann\u00e9es 15\n", + "K 148000 mois 183 ann\u00e9es 15\n", + "K 149000 mois 185 ann\u00e9es 15\n", + "K 150000 mois 186 ann\u00e9es 15\n", + "K 151000 mois 188 ann\u00e9es 15\n", + "K 152000 mois 190 ann\u00e9es 15\n", + "K 153000 mois 191 ann\u00e9es 15\n", + "K 154000 mois 193 ann\u00e9es 16\n", + "K 155000 mois 194 ann\u00e9es 16\n", + "K 156000 mois 196 ann\u00e9es 16\n", + "K 157000 mois 197 ann\u00e9es 16\n", + "K 158000 mois 199 ann\u00e9es 16\n", + "K 159000 mois 201 ann\u00e9es 16\n", + "K 160000 mois 202 ann\u00e9es 16\n", + "K 161000 mois 204 ann\u00e9es 17\n", + "K 162000 mois 206 ann\u00e9es 17\n", + "K 163000 mois 207 ann\u00e9es 17\n", + "K 164000 mois 209 ann\u00e9es 17\n", + "K 165000 mois 210 ann\u00e9es 17\n", + "K 166000 mois 212 ann\u00e9es 17\n", + "K 167000 mois 214 ann\u00e9es 17\n", + "K 168000 mois 215 ann\u00e9es 17\n", + "K 169000 mois 217 ann\u00e9es 18\n", + "K 170000 mois 219 ann\u00e9es 18\n", + "K 171000 mois 220 ann\u00e9es 18\n", + "K 172000 mois 222 ann\u00e9es 18\n", + "K 173000 mois 224 ann\u00e9es 18\n", + "K 174000 mois 226 ann\u00e9es 18\n", + "K 175000 mois 227 ann\u00e9es 18\n", + "K 176000 mois 229 ann\u00e9es 19\n", + "K 177000 mois 231 ann\u00e9es 19\n", + "K 178000 mois 232 ann\u00e9es 19\n", + "K 179000 mois 234 ann\u00e9es 19\n", + "K 180000 mois 236 ann\u00e9es 19\n", + "K 181000 mois 238 ann\u00e9es 19\n", + "K 182000 mois 239 ann\u00e9es 19\n", + "K 183000 mois 241 ann\u00e9es 20\n" + ] + }, + { + "data": { + "text/plain": [ + "183000" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "somme_maximale_step(1000, 0.029, 20, step=1000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "M\u00eame dans ce cas, on ne tombe pas exactement sur 20 ans. Il faudrait avoir une valeur pour ``step`` variable pour traiter tous les cas. Par exemple, d\u00e8s que le nombre de mois augmente de plus de 1, on divise $K$ par 2. La pr\u00e9cision serait au mois pr\u00e8s." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "K 175312.5 mois 228 ann\u00e9es 19 step 312.5\n", + "K 175625.0 mois 228 ann\u00e9es 19 step 312.5\n", + "K 175937.5 mois 229 ann\u00e9es 19 step 312.5\n", + "K 176250.0 mois 229 ann\u00e9es 19 step 312.5\n", + "K 176562.5 mois 230 ann\u00e9es 19 step 312.5\n", + "K 176875.0 mois 231 ann\u00e9es 19 step 312.5\n", + "K 177187.5 mois 231 ann\u00e9es 19 step 312.5\n", + "K 177500.0 mois 232 ann\u00e9es 19 step 312.5\n", + "K 177812.5 mois 232 ann\u00e9es 19 step 312.5\n", + "K 178125.0 mois 233 ann\u00e9es 19 step 312.5\n", + "K 178437.5 mois 233 ann\u00e9es 19 step 312.5\n", + "K 178750.0 mois 234 ann\u00e9es 19 step 312.5\n", + "K 179062.5 mois 234 ann\u00e9es 19 step 312.5\n", + "K 179375.0 mois 235 ann\u00e9es 19 step 312.5\n", + "K 179687.5 mois 235 ann\u00e9es 19 step 312.5\n", + "K 180000.0 mois 236 ann\u00e9es 19 step 312.5\n", + "K 180312.5 mois 237 ann\u00e9es 19 step 312.5\n", + "K 180625.0 mois 237 ann\u00e9es 19 step 312.5\n", + "K 180937.5 mois 238 ann\u00e9es 19 step 312.5\n", + "K 181250.0 mois 238 ann\u00e9es 19 step 312.5\n", + "K 181562.5 mois 239 ann\u00e9es 19 step 312.5\n", + "K 181875.0 mois 239 ann\u00e9es 19 step 312.5\n", + "K 182187.5 mois 240 ann\u00e9es 20 step 312.5\n" + ] + }, + { + "data": { + "text/plain": [ + "182187.5" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_maximale_mois_step(M,p,Y,step=10000):\n", + " K = 20000\n", + " l = mensualites(K, M, p)\n", + " l0 = l\n", + " while len(l) < Y*12:\n", + " while True:\n", + " l = mensualites(K + step, M, p)\n", + " if len(l) > len(l0) + 1:\n", + " step /= 2\n", + " else:\n", + " K += step\n", + " l0 = l\n", + " break\n", + " if len(l) >= (Y-1)*12:\n", + " print(\"K\", K,\"mois\", len(l), \"ann\u00e9es\", len(l)//12, \"step\", step)\n", + " return K\n", + " \n", + "somme_maximale_mois_step(1000, 0.029, 20)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### Q5 \n", + "\n", + "A Paris, on loue un appartement pour $L$ euros du m$^2$. Un parisien loue son appartement de $S m^2$ pour $SL$ euros. Ce parisien peut d\u00e9penser $A$ euros par mois r\u00e9partis en $SL$ le loyer et $A-SL$ les \u00e9conomies. Ecrire une fonction qui calcule les \u00e9conomies r\u00e9alis\u00e9es au bout de $Y$ ann\u00e9es.\n", + "\n", + "Apr\u00e8s les \u00e9tudes, ce parisien ne dispose d'aucun apport financier. Il commence par louer un appartement. Chaque mois, il envisage de consacrer $A$ euros. Il loue un apprtement suffisamment de petit de telle sorte que le loyer est inf\u00e9rieur \u00e0 $A$. Chaque mois, il \u00e9conomise la diff\u00e9rence. Chaque euros \u00e9conomise est plac\u00e9 \u00e0 taux fixe annuel $r$, donc au taux mensuel $rm = (1+r)^{\\frac{1}{12}}-1$. Cette fonction calcule les \u00e9conomies r\u00e9alis\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "25862.65218705509" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def economie(A,S,L,r,Y):\n", + " delta = A - S*L\n", + " rm = ((1+r)**(1.0/12)-1)\n", + " eco = 0\n", + " nbm = Y*12\n", + " while nbm > 0:\n", + " eco = eco * (1+rm) + delta\n", + " nbm -= 1\n", + " return eco\n", + "\n", + "economie(1000,40,20,0.015,10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q6\n", + "\n", + "En consid\u00e9rant que ce m\u00eame parisien ne peut d\u00e9penser plus de $A$ euros par mois, qu'il ne poss\u00e8de rien au d\u00e9but de sa carri\u00e8re professionnelle, on veut savoir \u00e0 partir de combien d'ann\u00e9es il sera en mesure d'acheter son appartement \u00e0 supposer qu'il peut se constituer un apport en capital issu de ces \u00e9conomies. On suppose que le prix au m\u00e8tre carr\u00e9 \u00e0 Paris est $C$ et qu'il veut emprunter avec un pr\u00eat d'une dur\u00e9e fixe. \n", + "\n", + "\n", + "Si on r\u00e9sume, le parisen n'a pas les moyens d'acheter son appartement d\u00e8s la fin de ses \u00e9tudes. Il commence \u00e0 louer et \u00e9conomise. La somme $A$ correspond \u00e0 un tiers de son salaire, il sait \u00e9galement qu'avec une mensualit\u00e9 de $A$, il peut emprunter au maximum sur 20 ans `` somme_maximale(A,p,20)``. Il pourra donc acheter un appartement de la m\u00eame surface lorsque ses \u00e9conomies ajout\u00e9es \u00e0 la somme maximale qu'il peut emprunter d\u00e9passeront le prix de l'appartement.\n", + "\n", + "On regarde chaque ann\u00e9e si les \u00e9conomies accumul\u00e9es permettent \u00e0 ce parisien d'acheter." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pyquickhelper.helpgen import NbImage\n", + "NbImage(\"exam2016_values.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "29" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def bascule(A,S,L,r,Y,C,p):\n", + " Y = 0\n", + " possible = C*S\n", + " while possible > 0:\n", + " Y += 1\n", + " eco = economie(A,S,L,r,Y)\n", + " somme = somme_maximale(A,p,Y)\n", + " possible = C*S - somme - eco\n", + " return Y\n", + "\n", + "bascule(1000,40,20,0.015,20,8000,0.029)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q7 exo 1\n", + "\n", + "Ecrire une fonction qui d\u00e9termine la plus petite surface que ce parisien ne pourra jamais s'offrir avant 20 ans au m\u00e8tre carr\u00e9 pr\u00e8s.\n", + "\n", + "Le raisonnement est toujours le m\u00eame, on regarde des plus petites surfaces aux plus grandes la surface que ce parisien pourra s'offrir. La fonction ``bascule`` indique quand un parisien peut acheter son appartement pour la premi\u00e8re fois. Il suffit de partir d'une petite surface et de lui ajouter des m\u00e8tres carr\u00e9s jusqu'\u00e0 ce que le moment de bascule se produise 20 ans apr\u00e8s avoir commenc\u00e9 \u00e0 travailler." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "34" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def surface_max(A,L,r,Y,C,p,delay=20):\n", + " S = 1\n", + " wait = bascule(A,S,L,r,Y,C,p)\n", + " while wait < delay:\n", + " S += 1\n", + " wait = bascule(A,S,L,r,Y,C,p)\n", + " return S\n", + "\n", + "surface_max(1000,20,0.015,20,8000,0.029)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q7 exo 2\n", + "\n", + "D\u00e9terminer la somme $A$ qu'il faille investir pour acheter 40 $m^2$ \u00e0 30 ans en supposant que ce parisien a commenc\u00e9 \u00e0 travailler \u00e0 23 ans et commence \u00e0 louer un appartement de cette surface.\n", + "\n", + "Le raisonnement est identique au question pr\u00e9c\u00e9dente. On commence par des mensualit\u00e9s $A$ \u00e9lev\u00e9es qu'on fait d\u00e9cro\u00eetre jusqu'\u00e0 ce que le parisien ne puisse plus s'offrir son appartement." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2600" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def A40a30(L,r,Y,C,p):\n", + " A = 10000\n", + " S = 40\n", + " wait = bascule(A,S,L,r,Y,C,p)\n", + " while wait < 7:\n", + " A -= 100\n", + " wait = bascule(A,S,L,r,Y,C,p)\n", + " return A\n", + "\n", + "A40a30(20,0.015,20,8000,0.029)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q8 \n", + "\n", + "Ce mod\u00e8le ne prend pas en compte tous les param\u00e8tres de la vie r\u00e9elle. Citez-en un. \n", + "\n", + "* L'inflation\n", + "* Les augmentations de salaires\n", + "* L'augmentation du prix au m\u00e8tre carr\u00e9\n", + "* ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q9 version dichotomique de Q4\n", + "\n", + "On utilise la fonction *decompose_mensualite* pour calculer la somme maximale qu'une personne puisse emprunter avec une mensualit\u00e9 *M*, \u00e0 savoir tout passe en int\u00e9r\u00eat ``M / ((1+p)**(1.0/12)-1)`` o\u00f9 celle qui correspond \u00e0 un nombre de mensualit\u00e9 infini.\n", + "\n", + "La r\u00e9ponse que l'on cherche est une somme mais celle-ci est une fonction croissante de la dur\u00e9e du pr\u00eat. Plut\u00f4t que de donner plus d'explications \u00e0 ce sujet, je sugg\u00e8re de lire le probl\u00e8me [Problem C. Egg Drop](https://code.google.com/codejam/contest/32003/dashboard#s=p2). La m\u00eame solution ne s'applique pas ici mais c'est le m\u00eame \u00e9tat d'esprit qui permet de la trouver. La solution que je propose n'est pas n\u00e9cessairement la meilleure mais elle est certainement plus rapide que la premi\u00e8re propos\u00e9e. \n", + "\n", + "La ligne avec ``###`` est la plus importante. On multiplie les pas de recherche pas un coefficient. Sup\u00e9rieur \u00e0 1 : l'algorithme ne peut pas converger. Inf\u00e9rieur \u00e0 1 : le pas doit \u00eatre suffisamment grand pour converger vers la vraie valeur. Cela d\u00e9pend de la d\u00e9riv\u00e9e $\\frac{df}{dK}$ o\u00f9 $f$ est la dur\u00e9e du pr\u00eat ``len(mensualites(K, M, p))``." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "182199.99817640134" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_maximale_dicho(M,p,Y):\n", + " K_max = M / ((1+p)**(1.0/12)-1)\n", + " K = K_max / 2\n", + " step = 0.5\n", + " dk = K * step\n", + " l = mensualites(K, M, p)\n", + " while len(l) != Y*12 and dk > 1e-5:\n", + " if len(l) < Y*12:\n", + " K += dk\n", + " K = min(K_max - 1000, K)\n", + " else:\n", + " K -= dk\n", + " dk *= step ###\n", + " l = mensualites(K, M, p)\n", + " if len(l) != Y*12:\n", + " raise Exception(\"il faut augmenter step\")\n", + " return K\n", + " \n", + "somme_maximale_dicho(1000, 0.029, 20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le param\u00e8tre ``dk`` donne une indication de la pr\u00e9cision. On compare les temps d'ex\u00e9cution :" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 25.7 ms per loop\n", + "100 loops, best of 3: 2.8 ms per loop\n" + ] + } + ], + "source": [ + "%timeit somme_maximale(1000, 0.029, 20)\n", + "%timeit somme_maximale_dicho(1000, 0.029, 20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 2 : coder les num\u00e9ros de t\u00e9l\u00e9phone" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1 \n", + "\n", + "Michel perd souvent ses carnets de num\u00e9ros et pour \u00e9viter d'importuner ses proches de recevoir des coups de fils impromptus, il utilise un code. Si la premi\u00e8re lettre est une voyelle, il permute les num\u00e9ros 3 et 4 sinon il les laisse en l'\u00e9tat. Si la seconde lettre est une voyelle, il permute les num\u00e9ros 5 et 6, rien en cas de consonnes. Exemple (on enl\u00e8ve volontairement les accents) :\n", + "\n", + " adele 06 64 34 22 67 --> 06 46 34 22 67\n", + " gerard 06 64 34 22 68 --> 06 64 43 22 86\n", + " \n", + "Ecrire la fonction qui transforme un num\u00e9ro. Il est recommand\u00e9 de ne pas tenir compte des espaces." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0646342267'" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def transforme_numero(prenom, numero):\n", + " res = numero[:2]\n", + " for i, c in enumerate(prenom):\n", + " if c in \"aeiouy\":\n", + " res += numero[i*2+3] + numero[i*2+2]\n", + " else:\n", + " res += numero[i*2+2:i*2+4]\n", + " if len(res) >= len(numero):\n", + " break\n", + " return res\n", + "\n", + "transforme_numero(\"adele\", \"0664342267\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2 \n", + "\n", + "Ecrire la fonction qui effectue la transformation inverse. La r\u00e9ciproque est en fait la m\u00eame fonction." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0664342267'" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "transforme_numero(\"adele\", \"0646342267\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Exercice 3 : coder les num\u00e9ros de t\u00e9l\u00e9phone" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1\n", + "\n", + "Michel perd souvent ses carnets de num\u00e9ros et pour \u00e9viter d'importuner ses proches de recevoir des coups de fils impromptus, il utilise un code. Si la premi\u00e8re lettre est une voyelle, il fait la somme des chiffres 3 et 4 et remplace le chiffre 4 par celui des unit\u00e9s de l'addition, sinon il les laisse en l'\u00e9tat. Si la seconde lettre est une voyelle, il additionne les chiffres 5 et 6 et remplace le chiffre 6 par celui des unit\u00e9s de l'addition, rien en cas de consonnes. Exemple (on enl\u00e8ve volontairement les accents) :\n", + "\n", + " adele 06 64 34 22 67 --> 06 60 34 24 67\n", + " gerard 06 64 34 22 68 --> 06 64 37 22 64\n", + "\n", + "Ecrire la fonction qui transforme un num\u00e9ro. Il est recommand\u00e9 de ne pas tenir compte des espaces." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0660342467'" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def transforme_numero(prenom, numero):\n", + " res = numero[:2]\n", + " for i, c in enumerate(prenom):\n", + " if c in \"aeiouy\":\n", + " res += numero[i*2+2] + str ( (int(numero[i*2+2]) + int(numero[i*2+3])) % 10)\n", + " else:\n", + " res += numero[i*2+2:i*2+4]\n", + " if len(res) >= len(numero):\n", + " break\n", + " return res\n", + "\n", + "transforme_numero(\"adele\", \"0664342267\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2\n", + "\n", + "A votre avis, est-il possible d'\u00e9crire la fonction qui effectue la transformation inverse. Justifiez.\n", + "\n", + "Oui et voici la r\u00e9ciproque. On consid\u00e8re un groupe de chiffre modifi\u00e9, l'important est de comprendre que si le second chiffre est inf\u00e9rieur au premier alors la somme des deux chiffres initiaux d\u00e9passe n\u00e9cessairement 10." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0664342267'" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def transforme_numero_envers(prenom, numero):\n", + " res = numero[:2]\n", + " for i, c in enumerate(prenom):\n", + " if c in \"aeiouy\":\n", + " res += numero[i*2+2] + str ( (int(numero[i*2+3]) - int(numero[i*2+2]) + 10) % 10)\n", + " else:\n", + " res += numero[i*2+2:i*2+4]\n", + " if len(res) >= len(numero):\n", + " break\n", + " return res\n", + "\n", + "transforme_numero_envers(\"adele\", \"0660342467\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque :** Beaucoup ont affront\u00e9 l'erreur suivante" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unorderable types: str() < int()", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;34m\"3\"\u001b[0m \u001b[1;33m<\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: unorderable types: str() < int()" + ] + } + ], + "source": [ + "# d\u00e9clenche une exception\n", + "\"3\" < 4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comme l'exemple le stipule, cela survient lorsqu'on essaye de faire une comparison num\u00e9rique entre une cha\u00eene de caract\u00e8res et un type num\u00e9rique. Il faut convertir la cha\u00eene de caract\u00e8res." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "int(\"3\") < 4" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2017.ipynb b/_doc/practice/exams/td_note_2017.ipynb new file mode 100644 index 00000000..2bcb7a09 --- /dev/null +++ b/_doc/practice/exams/td_note_2017.ipynb @@ -0,0 +1,1133 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - TD not\u00e9, 16 d\u00e9cembre 2016\n", + "\n", + "R\u00e9gression lin\u00e9aire avec des variables cat\u00e9gorielles." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On suppose qu'on dispose d'un ensemble d'observations $(X_i, Y_i)$ avec $X_i, Y_i \\in \\mathbb{R}$. La r\u00e9gression lin\u00e9aire consiste une relation lin\u00e9aire $Y_i = a X_i + b + \\epsilon_i$ qui minimise la variance du bruit. On pose :\n", + "\n", + "$$E(a, b) = \\sum_i (Y_i - (a X_i + b))^2$$\n", + "\n", + "On cherche $a, b$ tels que :\n", + "\n", + "$$a^*, b^* = \\arg \\min E(a, b) = \\arg \\min \\sum_i (Y_i - (a X_i + b))^2$$\n", + "\n", + "La fonction est d\u00e9rivable et on trouve :\n", + "\n", + "$$\\frac{\\partial E(a,b)}{\\partial a} = - 2 \\sum_i X_i ( Y_i - (a X_i + b)) \\text{ et } \\frac{\\partial E(a,b)}{\\partial b} = - 2 \\sum_i ( Y_i - (a X_i + b))$$\n", + "\n", + "Il suffit alors d'annuler les d\u00e9riv\u00e9es. On r\u00e9soud un syst\u00e8me d'\u00e9quations lin\u00e9aires. On note :\n", + "\n", + "$$\\begin{array}{l} \\mathbb{E} X = \\frac{1}{n}\\sum_{i=1}^n X_i \\text{ et } \\mathbb{E} Y = \\frac{1}{n}\\sum_{i=1}^n Y_i \\\\ \\mathbb{E}(X^2) = \\frac{1}{n}\\sum_{i=1}^n X_i^2 \\text{ et } \\mathbb{E}(XY) = \\frac{1}{n}\\sum_{i=1}^n X_i Y_i \\end{array}$$\n", + "\n", + "Finalement :\n", + "\n", + "$$\\begin{array}{l} a^* = \\frac{ \\mathbb{E}(XY) - \\mathbb{E} X \\mathbb{E} Y}{\\mathbb{E}(X^2) - (\\mathbb{E} X)^2} \\text{ et } b^* = \\mathbb{E} Y - a^* \\mathbb{E} X \\end{array}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1\n", + "\n", + "On g\u00e9n\u00e8re un nuage de points avec le code suivant :" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(2.996890181837922, 2.8750295096923186),\n", + " (4.264526460045277, 2.324063943726332),\n", + " (4.718648422500299, 3.052469543647318),\n", + " (2.442689562115705, 3.861870829036456),\n", + " (0.13558433730903707, 0.5754835901808546),\n", + " (5.59230695209076, 1.6209924216651825),\n", + " (7.610357428256408, 3.3202733390571373),\n", + " (8.678403330137792, 4.96766236219644),\n", + " (9.427259745518597, 6.385862058140737),\n", + " (9.273956381823456, 4.938275166261537)]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import random\n", + "def generate_xy(n=100, a=0.5, b=1):\n", + " res = []\n", + " for i in range(0, n):\n", + " x = random.uniform(0, 10)\n", + " res.append((x, x*a + b + random.gauss(0,1)))\n", + " return res\n", + "\n", + "generate_xy(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### Q2\n", + "\n", + "Ecrire une fonction qui calcule $\\mathbb{E} X, \\mathbb{E} Y, \\mathbb{E}(XY), \\mathbb{E}(X^2)$. Plusieurs \u00e9tudiants m'ont demand\u00e9 ce qu'\u00e9tait ``obs``. C'est simplement le r\u00e9sultat de la fonction pr\u00e9c\u00e9dente." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5.523441805914873, 3.850511796328412, 25.88928454527569, 38.98854258182378)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def calcule_exyxyx2(obs):\n", + " sx = 0\n", + " sy = 0\n", + " sxy = 0\n", + " sx2 = 0\n", + " for x, y in obs:\n", + " sx += x\n", + " sy += y\n", + " sxy += x * y\n", + " sx2 += x * x\n", + " n = len(obs)\n", + " return sx/n, sy/n, sxy/n, sx2/n\n", + "\n", + "obs = generate_xy(10)\n", + "calcule_exyxyx2(obs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3\n", + "\n", + " Calculer les grandeurs $a^*$, $b^*$. A priori, on doit retrouver quelque chose d'assez proche des valeurs choisies pour la premi\u00e8re question : $a=0.5$, $b=1$." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5446995618974346, 6.859128128176218)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def calcule_ab(obs):\n", + " sx, sy, sxy, sx2 = calcule_exyxyx2(obs)\n", + " a = (sxy - sx * sx) / (sx2 - sx**2)\n", + " b = sy - a * sx\n", + " return a, b\n", + "\n", + "calcule_ab(obs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4\n", + "\n", + "Compl\u00e9ter le programme." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('vert', 5.132157444058703),\n", + " ('vert', 6.088324149707968),\n", + " ('rouge', 0.16315983779393228),\n", + " ('rouge', 0.9717657424738734),\n", + " ('rouge', 2.843197432779423),\n", + " ('rouge', 0.7204386278807904),\n", + " ('bleu', 21.89226869979884),\n", + " ('rouge', -0.16605748011543708),\n", + " ('rouge', -0.02903894820027486),\n", + " ('rouge', 0.5787816483863786)]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import random\n", + "def generate_caty(n=100, a=0.5, b=1, cats=[\"rouge\", \"vert\", \"bleu\"]):\n", + " res = []\n", + " for i in range(0, n):\n", + " x = random.randint(0,2)\n", + " cat = cats[x]\n", + " res.append((cat, 10*x**2*a + b + random.gauss(0,1)))\n", + " return res\n", + "\n", + "generate_caty(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5\n", + "\n", + "On voudrait quand m\u00eame faire une r\u00e9gression de la variable $Y$ sur la variable cat\u00e9gorielle. On construit une fonction qui assigne un num\u00e9ro quelconque mais distinct \u00e0 chaque cat\u00e9gorie. La fonction retourne un dictionnaire avec les cat\u00e9gories comme cl\u00e9 et les num\u00e9ros comme valeurs." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'bleu': 0, 'rouge': 2, 'vert': 1}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def numero_cat(obs):\n", + " mapping = {}\n", + " for color, y in obs:\n", + " if color not in mapping:\n", + " mapping[color] = len(mapping)\n", + " return mapping\n", + "\n", + "obs = generate_caty(100)\n", + "numero_cat(obs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q6 \n", + "\n", + "On construit la matrice $M_{ic}$ tel que : $M_{ic}$ vaut 1 si $c$ est le num\u00e9ro de la cat\u00e9gorie $X_i$, 0 sinon." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1., 0., 0.],\n", + " [ 0., 1., 0.],\n", + " [ 1., 0., 0.],\n", + " [ 1., 0., 0.],\n", + " [ 0., 0., 1.]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy\n", + "def construit_M(obs):\n", + " mapping = numero_cat(obs)\n", + " M = numpy.zeros((len(obs), 3))\n", + " for i, (color, y) in enumerate(obs):\n", + " cat = mapping[color]\n", + " M[i, cat] = 1.0\n", + " return M\n", + " \n", + "M = construit_M(obs)\n", + "M[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q7 \n", + "\n", + "Il est conseill\u00e9 de convertir la matrice $M$ et les $Y$ au format *numpy*. On ajoute un vecteur constant \u00e0 la matrice $M$. La requ\u00eate *numpy add column* sur un moteur de recherche vous directement \u00e0 ce r\u00e9sultat : [How to add an extra column to an numpy array](http://stackoverflow.com/questions/8486294/how-to-add-an-extra-column-to-an-numpy-array)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([[ 1., 0., 0., 1.],\n", + " [ 0., 1., 0., 1.],\n", + " [ 1., 0., 0., 1.],\n", + " [ 1., 0., 0., 1.],\n", + " [ 0., 0., 1., 1.]]), array([[ 21.15485572],\n", + " [ 6.37882494],\n", + " [ 21.37124634],\n", + " [ 21.77476221],\n", + " [ 2.03305199]]))" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def convert_numpy(obs):\n", + " M = construit_M(obs)\n", + " Mc = numpy.hstack([M, numpy.ones((M.shape[0], 1))])\n", + " Y = numpy.array([y for c, y in obs])\n", + " return M, Mc, Y.reshape((M.shape[0], 1))\n", + "\n", + "M, Mc, Y = convert_numpy(obs)\n", + "Mc[:5], Y[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q8 \n", + "\n", + "On r\u00e9soud la r\u00e9gression multidimensionnelle en appliquant la formule $C^* = (M'M)^{-1}M'Y$. La question 7 ne servait pas \u00e0 grand chose except\u00e9 faire d\u00e9couvrir la fonction [hstack](https://docs.scipy.org/doc/numpy/reference/generated/numpy.hstack.html) car le rang de la matrice ``Mc`` est 3 < 4." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 20.92499253],\n", + " [ 6.14818418],\n", + " [ 1.09988478]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "alpha = numpy.linalg.inv(M.T @ M) @ M.T @ Y\n", + "alpha" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q9 \n", + "\n", + "La r\u00e9gression d\u00e9termine les coefficients $\\alpha$ dans la r\u00e9gression $Y_i = \\alpha_{rouge} \\mathbb{1}_{X_i = rouge} + \\alpha_{vert} \\mathbb{1}_{X_i = vert} + \\alpha_{bleu} \\mathbb{1}_{X_i = bleu} + \\epsilon_i$.\n", + "\n", + "Construire le vecteur $\\hat{Y_i} = \\alpha_{rouge} \\mathbb{1}_{X_i = rouge} + \\alpha_{vert} \\mathbb{1}_{X_i = vert} + \\alpha_{bleu} \\mathbb{1}_{X_i = bleu}$." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 20.92499253],\n", + " [ 6.14818418],\n", + " [ 20.92499253],\n", + " [ 20.92499253],\n", + " [ 1.09988478]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Yp = numpy.zeros((M.shape[0], 1))\n", + "for i in range(3):\n", + " Yp[ M[:,i] == 1, 0] = alpha[i, 0]\n", + "Yp[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q10\n", + "\n", + "Utiliser le r\u00e9sultat de la question 3 pour calculer les coefficients de la r\u00e9gression $Y_i = a^* \\hat{Y_i} + b^*$." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 1.]), array([ 1.77635684e-15]))" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "obs = [(x, y) for x, y in zip(Yp, Y)]\n", + "calcule_ab( obs )" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "On aboutit au r\u00e9sultat $Y = \\hat{Y} + \\epsilon$. On a associ\u00e9 une valeur \u00e0 chaque cat\u00e9gorie de telle sorte que la r\u00e9gression de $Y$ sur cette valeur soit cette valeur. Autrement dit, c'est la meilleur approximation de $Y$ sur chaque cat\u00e9gorie. A quoi cela correspond-il ? C'est le second \u00e9nonc\u00e9 qui r\u00e9pond \u00e0 cette question." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1 - Q2 - Q3\n", + "\n", + "Ce sont les m\u00eames r\u00e9ponses." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4\n", + "\n", + "Un moyen tr\u00e8s simple de simuler une [loi multinomiale](https://fr.wikipedia.org/wiki/Loi_multinomiale) est de partir d'une loi uniforme et discr\u00e8te \u00e0 valeur dans entre 1 et 10. On tire un nombre, s'il est inf\u00e9rieur ou \u00e9gal \u00e0 5, ce sera la cat\u00e9gorie 0, 1 si c'est inf\u00e9rieur \u00e0 8, 2 sinon." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('vert', 6.0084452843428675),\n", + " ('rouge', 2.155449750270483),\n", + " ('rouge', 2.1132607428792447),\n", + " ('vert', 6.897729973062269),\n", + " ('rouge', 0.7637316114791164),\n", + " ('vert', 5.566787193134299),\n", + " ('vert', 5.848567708215508),\n", + " ('bleu', 19.722503065860707),\n", + " ('rouge', 0.8043492141543047),\n", + " ('bleu', 21.675781652825997)]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def generate_caty(n=100, a=0.5, b=1, cats=[\"rouge\", \"vert\", \"bleu\"]):\n", + " res = []\n", + " for i in range(0, n):\n", + " # on veut 50% de rouge, 30% de vert, 20% de bleu\n", + " x = random.randint(1, 10)\n", + " if x <= 5: x = 0\n", + " elif x <= 8: x = 1\n", + " else : x = 2\n", + " cat = cats[x]\n", + " res.append((cat, 10*x**2*a + b + random.gauss(0,1)))\n", + " return res\n", + "\n", + "obs = generate_caty(10)\n", + "obs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5 \n", + "\n", + "On voudrait quand m\u00eame faire une r\u00e9gression de la variable $Y$ sur la variable cat\u00e9gorielle. On commence par les compter. Construire une fonction qui compte le nombre de fois qu'une cat\u00e9gorie est pr\u00e9sente dans les donn\u00e9es (un histogramme)." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'bleu': 2, 'rouge': 4, 'vert': 4}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def histogram_cat(obs):\n", + " h = dict()\n", + " for color, y in obs:\n", + " h[color] = h.get(color, 0) + 1\n", + " return h\n", + "\n", + "histogram_cat(obs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q6\n", + "\n", + "Construire une fonction qui calcule la moyenne des $Y_i$ pour chaque cat\u00e9gorie : $\\mathbb{E}(Y | rouge)$, $\\mathbb{E}(Y | vert)$, $\\mathbb{E}(Y | bleu)$. La fonction retourne un dictionnaire ``{couleur:moyenne}``. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'bleu': 20.69914235934335,\n", + " 'rouge': 1.4591978296957873,\n", + " 'vert': 6.080382539688736}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def moyenne_cat(obs):\n", + " h = dict()\n", + " sy = dict()\n", + " for color, y in obs:\n", + " h[color] = h.get(color, 0) + 1\n", + " sy[color] = sy.get(color, 0) + y\n", + " for k, v in h.items():\n", + " sy[k] /= v\n", + " return sy\n", + "\n", + "moyenne_cat(obs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'\u00e9nonc\u00e9 induisait quelque peu en erreur car la fonction sugg\u00e9r\u00e9e ne permet de calculer ces moyennes. Il suffit de changer." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q7\n", + "\n", + "Construire le vecteur $Z_i = \\mathbb{E}(Y | rouge)\\mathbb{1}_{X_i = rouge} + \\mathbb{E}(Y | vert) \\mathbb{1}_{X_i = vert} + \\mathbb{E}(Y | bleu) \\mathbb{1}_{X_i = bleu}$." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[6.080382539688736,\n", + " 1.4591978296957873,\n", + " 1.4591978296957873,\n", + " 6.080382539688736,\n", + " 1.4591978296957873]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "moys = moyenne_cat(obs)\n", + "Z = [moys[c] for c, y in obs]\n", + "Z[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q8\n", + "\n", + "Utiliser le r\u00e9sultat de la question 3 pour calculer les coefficients de la r\u00e9gression $Y_i = a^* Z_i + b^*$." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1.0, 1.7763568394002505e-15)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "obs2 = [(z, y) for (c, y), z in zip(obs, Z)]\n", + "calcule_ab( obs2 )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On aboutit au r\u00e9sultat $Y = \\hat{Y} + \\epsilon$. On a associ\u00e9 une valeur \u00e0 chaque cat\u00e9gorie de telle sorte que la r\u00e9gression de $Y$ sur cette valeur soit cette valeur." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q9 \n", + "\n", + "Calculer la matrice de variance / covariance pour les variables $(Y_i)$, $(Z_i)$, $(Y_i - Z_i)$, $\\mathbb{1}_{X_i = rouge}$, $\\mathbb{1}_{X_i = vert}$, $\\mathbb{1}_{X_i = bleu}$. " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 6.00844528, 6.08038254, -0.07193726, 0. , 1. ,\n", + " 0. ],\n", + " [ 2.15544975, 1.45919783, 0.69625192, 1. , 0. ,\n", + " 0. ],\n", + " [ 2.11326074, 1.45919783, 0.65406291, 1. , 0. ,\n", + " 0. ],\n", + " [ 6.89772997, 6.08038254, 0.81734743, 0. , 1. ,\n", + " 0. ],\n", + " [ 0.76373161, 1.45919783, -0.69546622, 1. , 0. ,\n", + " 0. ]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bigM = numpy.empty((len(obs), 6))\n", + "bigM[:, 0] = [o[1] for o in obs]\n", + "bigM[:, 1] = Z\n", + "bigM[:, 2] = bigM[:, 0] - bigM[:, 1]\n", + "bigM[:, 3] = [ 1 if o[0] == \"rouge\" else 0 for o in obs]\n", + "bigM[:, 4] = [ 1 if o[0] == \"vert\" else 0 for o in obs]\n", + "bigM[:, 5] = [ 1 if o[0] == \"bleu\" else 0 for o in obs]\n", + "bigM[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On utilise la fonction [cov](https://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5.62221004e+01, 5.56972711e+01, 5.24829301e-01,\n", + " -2.53176124e+00, -4.77901369e-01, 3.00966261e+00],\n", + " [ 5.56972711e+01, 5.56972711e+01, -1.92890933e-16,\n", + " -2.53176124e+00, -4.77901369e-01, 3.00966261e+00],\n", + " [ 5.24829301e-01, -1.92890933e-16, 5.24829301e-01,\n", + " -5.54535166e-17, 7.40725030e-17, -1.24510807e-17],\n", + " [ -2.53176124e+00, -2.53176124e+00, -5.54535166e-17,\n", + " 2.66666667e-01, -1.77777778e-01, -8.88888889e-02],\n", + " [ -4.77901369e-01, -4.77901369e-01, 7.40725030e-17,\n", + " -1.77777778e-01, 2.66666667e-01, -8.88888889e-02],\n", + " [ 3.00966261e+00, 3.00966261e+00, -1.24510807e-17,\n", + " -8.88888889e-02, -8.88888889e-02, 1.77777778e-01]])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c = numpy.cov(bigM.T)\n", + "c" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On affiche un peu mieux les r\u00e9sultats :" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012345
056.22255.6970.525-2.532-0.4783.010
155.69755.697-0.000-2.532-0.4783.010
20.525-0.0000.525-0.0000.000-0.000
3-2.532-2.532-0.0000.267-0.178-0.089
4-0.478-0.4780.000-0.1780.267-0.089
53.0103.010-0.000-0.089-0.0890.178
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5\n", + "0 56.222 55.697 0.525 -2.532 -0.478 3.010\n", + "1 55.697 55.697 -0.000 -2.532 -0.478 3.010\n", + "2 0.525 -0.000 0.525 -0.000 0.000 -0.000\n", + "3 -2.532 -2.532 -0.000 0.267 -0.178 -0.089\n", + "4 -0.478 -0.478 0.000 -0.178 0.267 -0.089\n", + "5 3.010 3.010 -0.000 -0.089 -0.089 0.178" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas\n", + "pandas.DataFrame(c).applymap(lambda x: '%1.3f' % x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q10 \n", + "\n", + "On permute rouge et vert. Construire le vecteur $W_i = \\mathbb{E}(Y | rouge)\\mathbb{1}_{X_i = vert} + \\mathbb{E}(Y | vert)\\mathbb{1}_{X_i = rouge} + \\mathbb{E}(Y | bleu)\\mathbb{1}_{X_i = bleu}$. Utiliser le r\u00e9sultat de la question 3 pour calculer les coefficients de la r\u00e9gression $Y_i = a^* W_i + b^*$. V\u00e9rifiez que l'erreur est sup\u00e9rieure." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "moys = moyenne_cat(obs)\n", + "moys[\"rouge\"], moys[\"vert\"] = moys.get(\"vert\", 0), moys.get(\"rouge\", 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.829591905722086, 1.2193824894893863)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "W = [moys[c] for c, y in obs]\n", + "obs3 = [(w, y) for (c, y), w in zip(obs, W)]\n", + "calcule_ab( obs3 )" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.4723463712054069, 16.100975199731273)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def calcule_erreur(obs):\n", + " a, b = calcule_ab(obs)\n", + " e = [(a*x + b - y)**2 for x, y in obs]\n", + " return sum(e) / len(obs)\n", + "\n", + "calcule_erreur(obs2), calcule_erreur(obs3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C'est carr\u00e9ment sup\u00e9rieur." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "L'[analyse des correspondances multiples](https://fr.wikipedia.org/wiki/Analyse_des_correspondances_multiples) est une fa\u00e7on d'\u00e9tudier les modalit\u00e9s de variables cat\u00e9gorielles mais cela ne fait pas de la pr\u00e9diction. Le mod\u00e8le [logit - probit](https://fr.wikipedia.org/wiki/Mod%C3%A8le_Probit) pr\u00e9dit une variable binaire \u00e0 partir de variables continue mais dans notre cas, c'est la variable \u00e0 pr\u00e9dire qui est continue. Pour effectuer une pr\u00e9diction, il convertit les cat\u00e9gories en variables num\u00e9riques (voir [Categorical Variables](https://en.wikipedia.org/wiki/Categorical_variable)). Le langage R est plus outill\u00e9 pour cela : [Regression on categorical variables](https://www.r-bloggers.com/regression-on-categorical-variables/). Le module [categorical-encoding](https://github.com/scikit-learn-contrib/categorical-encoding) est disponible en python. Cet examen d\u00e9crit une m\u00e9thode parmi d'autres pour transformer les cat\u00e9gories en variables continues." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2017_2.ipynb b/_doc/practice/exams/td_note_2017_2.ipynb new file mode 100644 index 00000000..b09dbc86 --- /dev/null +++ b/_doc/practice/exams/td_note_2017_2.ipynb @@ -0,0 +1,892 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - TD not\u00e9, 21 f\u00e9vrier 2017\n", + "\n", + "Solution du TD not\u00e9, celui-ci pr\u00e9sente un algorithme pour calculer les coefficients d'une r\u00e9gression quantile et par extension d'une m\u00e9diane dans un espace \u00e0 plusieurs dimensions." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pr\u00e9cision : dans tout l'\u00e9nonc\u00e9, la transpos\u00e9e d'une matrice est not\u00e9e $X' = X^{T}$. La plupart du temps $X$ et $Y$ d\u00e9signent des vecteurs colonnes. $\\beta$ d\u00e9signe un vecteur ligne, $W$ une matrice diagonale." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercice 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1 \n", + "\n", + "A l'aide du module [random](https://docs.python.org/3/library/random.html), g\u00e9n\u00e9rer un ensemble de points al\u00e9atoires." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1000, 51, 83, 29, 15, 62, 90, 28, 61, 40]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import random\n", + "\n", + "def ensemble_aleatoire(n):\n", + " res = [random.randint(0, 100) for i in range(n)]\n", + " res[0] = 1000\n", + " return res\n", + "\n", + "ens = ensemble_aleatoire(10)\n", + "ens" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2\n", + "\n", + "La m\u00e9diane d'un ensemble de points $\\left\\{X_1, ..., X_n\\right\\}$ est une valeur $X_M$ telle que : \n", + "\n", + "$$\\sum_i \\mathbb{1}_{X_i < X_m} = \\sum_i \\mathbb{1}_{X_i > X_m}$$\n", + "\n", + "Autrement dit, il y a autant de valeurs inf\u00e9rieures que sup\u00e9rieures \u00e0 $X_M$. On obtient cette valeur en triant les \u00e9l\u00e9ments par ordre croissant et en prenant celui du milieu.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "61" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def mediane(ensemble):\n", + " tri = list(sorted(ensemble))\n", + " return tri[len(tri)//2]\n", + "\n", + "mediane(ens)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3\n", + "\n", + "Lorsque le nombre de points est pair, la m\u00e9diane peut \u00eatre n'importe quelle valeur dans un intervalle. Modifier votre fonction de fa\u00e7on \u00e0 ce que la fonction pr\u00e9c\u00e9dente retourne le milieu de la fonction." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "56.0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def mediane(ensemble):\n", + " tri = list(sorted(ensemble))\n", + " if len(tri) % 2 == 0:\n", + " m = len(tri)//2\n", + " return (tri[m] + tri[m-1]) / 2\n", + " else:\n", + " return tri[len(tri)//2]\n", + "\n", + "mediane(ens)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4\n", + "\n", + "Pour un ensemble de points $E=\\left\\{X_1, ..., X_n\\right\\}$, on consid\u00e8re la fonction suivante : \n", + "\n", + "$$f(x) = \\sum_{i=1}^n \\left | x - X_i\\right |$$.\n", + "\n", + "On suppose que la m\u00e9diane $X_M$ de l'ensemble $E$ n'appartient pas \u00e0 $E$ : $X_M \\notin E$. Que vaut $f'(X_M)$ ?\n", + "On acceptera le fait que la m\u00e9diane est le seul point dans ce cas.\n", + "\n", + "$$f'(X_m) = - \\sum_{i=1}^n \\mathbb{1}_{X_i < X_m} + \\sum_{i=1}^n \\mathbb{1}_{X_i > X_m}$$\n", + "\n", + "Par d\u00e9finition de la m\u00e9diane, $f'(X_M)=0$. En triant les \u00e9l\u00e9ments, on montre que la $f'(x) = 0 \\Longleftrightarrow x=X_m$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5\n", + "\n", + "On suppose qu'on dispose d'un ensemble d'observations $\\left(X_i, Y_i\\right)$ avec $X_i, Y_i \\in \\mathbb{R}$.\n", + "La r\u00e9gression lin\u00e9aire consiste une relation lin\u00e9aire $Y_i = a X_i + b + \\epsilon_i$\n", + "qui minimise la variance du bruit. On pose :\n", + "\n", + "$$E(a, b) = \\sum_i \\left(Y_i - (a X_i + b)\\right)^2$$\n", + "\n", + "On cherche $a, b$ tels que :\n", + "\n", + "$$a^*, b^* = \\arg \\min E(a, b) = \\arg \\min \\sum_i \\left(Y_i - (a X_i + b)\\right)^2$$\n", + "\n", + "La fonction est d\u00e9rivable et on trouve :\n", + "\n", + "$$\\frac{\\partial E(a,b)}{\\partial a} = - 2 \\sum_i X_i ( Y_i - (a X_i + b)) \\text{ et } \\frac{\\partial E(a,b)}{\\partial b} = - 2 \\sum_i ( Y_i - (a X_i + b))$$\n", + "\n", + "Il suffit alors d'annuler les d\u00e9riv\u00e9es. On r\u00e9soud un syst\u00e8me d'\u00e9quations lin\u00e9aires. On note :\n", + "\n", + "$$\\begin{array}{l} \\mathbb{E} X = \\frac{1}{n}\\sum_{i=1}^n X_i \\text{ et } \\mathbb{E} Y = \\frac{1}{n}\\sum_{i=1}^n Y_i \\\\ \\mathbb{E}{X^2} = \\frac{1}{n}\\sum_{i=1}^n X_i^2 \\text{ et } \\mathbb{E} {XY} = \\frac{1}{n}\\sum_{i=1}^n X_i Y_i \\end{array}$$\n", + "\n", + "Finalement :\n", + "\n", + "$$\\begin{array}{l} a^* = \\frac{ \\mathbb{E} {XY} - \\mathbb{E} X \\mathbb{E} Y}{\\mathbb{E}{X^2} - (\\mathbb{E} X)^2} \\text{ et } b^* = \\mathbb{E} Y - a^* \\mathbb{E} X \\end{array}$$\n", + "\n", + "Lorsqu'on a plusieurs dimensions pour $X$, on \u00e9crit le probl\u00e8me d'optimisation, on cherche les coefficients $\\beta^*$ qui minimisent :\n", + "\n", + "$$E(\\beta)=\\sum_{i=1}^n \\left(y_i - X_i \\beta\\right)^2 = \\left \\Vert Y - X\\beta \\right \\Vert ^2$$\n", + "\n", + "La solution est : $\\beta^* = (X'X)^{-1}X'Y$.\n", + "\n", + "Ecrire une fonction qui calcule ce vecteur optimal." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.00141843]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from numpy.linalg import inv\n", + "\n", + "def regression_lineaire(X, Y):\n", + " t = X.T\n", + " return inv(t @ X) @ t @ Y\n", + "\n", + "import numpy\n", + "X = numpy.array(ens).reshape((len(ens), 1))\n", + "regression_lineaire(X, X+1) # un essai pour v\u00e9rifier que la valeur n'est pas aberrante" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q6\n", + "\n", + "Ecrire une fonction qui transforme un vecteur en une matrice diagonale." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 0, 0],\n", + " [0, 2, 0],\n", + " [0, 0, 3]])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def matrice_diagonale(W):\n", + " return numpy.diag(W)\n", + "\n", + "matrice_diagonale([1, 2, 3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q7\n", + "\n", + "On consid\u00e8re maintenant que chaque observation est pond\u00e9r\u00e9e par un poids $w_i$. On veut maintenant trouver le vecteur $\\beta$ qui minimise :\n", + "\n", + "$$E(\\beta)=\\sum_{i=1}^n w_i \\left( y_i - X_i \\beta \\right)^2 = \\left \\Vert W^{\\frac{1}{2}}(Y - X\\beta)\\right \\Vert^2$$\n", + "\n", + "O\u00f9 $W=diag(w_1, ..., w_n)$ est la matrice diagonale. La solution est :\n", + "\n", + "$$\\beta_* = (X'WX)^{-1}X'WY$$.\n", + "\n", + "Ecrire une fonction qui calcule la solution de la r\u00e9gression pond\u00e9r\u00e9e. La fonction [ravel](https://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel.html) est utile." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([[ 1.]]), array([[ 1.01240451]]))" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def regression_lineaire_ponderee(X, Y, W):\n", + " if len(W.shape) == 1 or W.shape[0] != W.shape[1]:\n", + " # c'est un vecteur\n", + " W = matrice_diagonale(W.ravel())\n", + " wx = W @ X\n", + " xt = X.T\n", + " return inv(xt @ wx) @ xt @ W @ Y\n", + "\n", + "\n", + "X = numpy.array(sorted(ens)).reshape((len(ens), 1))\n", + "Y = X.copy()\n", + "Y[0] = max(X)\n", + "W = numpy.ones(len(ens))\n", + "W[0] = 0\n", + "regression_lineaire_ponderee(X, Y, W), regression_lineaire(X, Y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q8\n", + "\n", + "Ecrire une fonction qui calcule les quantit\u00e9s suivantes (fonctions [maximum](https://docs.scipy.org/doc/numpy/reference/generated/numpy.maximum.html), [reciprocal](https://docs.scipy.org/doc/numpy/reference/generated/numpy.reciprocal.html#numpy.reciprocal)).\n", + "\n", + "$$z_i = \\frac{1}{\\max\\left( \\delta, \\left|y_i - X_i \\beta\\right|\\right)}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1.01330469e-03],\n", + " [ 5.26315789e+00],\n", + " [ 4.54545455e+00],\n", + " [ 3.22580645e+00],\n", + " [ 1.85185185e+00],\n", + " [ 1.47058824e+00],\n", + " [ 1.14942529e+00],\n", + " [ 1.07526882e+00],\n", + " [ 1.07526882e+00],\n", + " [ 1.00000000e-01]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def calcule_z(X, beta, Y, W, delta=0.0001):\n", + " epsilon = numpy.abs(Y - X @ beta) \n", + " return numpy.reciprocal(numpy.maximum(epsilon, numpy.ones(epsilon.shape) * delta))\n", + "\n", + "calcule_z(X * 1.0, numpy.array([[1.01]]), Y, W)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q9\n", + "\n", + "On souhaite coder l'algorithme suivant :\n", + "\n", + "1. $w_i^{(1)} = 1$\n", + "2. $\\beta_{(t)} = (X'W^{(t)}X)^{-1}X'W^{(t)}Y$\n", + "3. $w_i^{(t+1)} = \\frac{1}{\\max\\left( \\delta, \\left|y_i - X_i \\beta^{(t)}\\right|\\right)}$\n", + "4. $t = t+1$\n", + "5. Retour \u00e0 l'\u00e9tape 2.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 150.13052808 [[ 13.82243581]]\n", + "1 104.79608014 [[ 3.21524459]]\n", + "2 100.851019446 [[ 2.25815451]]\n", + "3 100.36420567 [[ 2.12644545]]\n", + "4 100.255554539 [[ 2.09141327]]\n", + "5 100.220626093 [[ 2.0777948]]\n", + "6 100.219023635 [[ 2.07639404]]\n", + "7 100.21901041 [[ 2.07631459]]\n", + "8 100.218994922 [[ 2.07622156]]\n", + "9 100.218976948 [[ 2.07611358]]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[ 2.07611358]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def algorithm(X, Y, delta=0.0001):\n", + " W = numpy.ones(X.shape[0])\n", + " for i in range(0, 10):\n", + " beta = regression_lineaire_ponderee(X, Y, W)\n", + " W = calcule_z(X, beta, Y, W, delta=delta)\n", + " E = numpy.abs(Y - X @ beta).sum()\n", + " print(i, E, beta)\n", + " return beta\n", + " \n", + "X = numpy.random.rand(10, 1) \n", + "Y = X*2 + numpy.random.rand()\n", + "Y[0] = Y[0] + 100\n", + "algorithm(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 13.82243581]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regression_lineaire(X, Y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q10" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "34.5" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ens = ensemble_aleatoire(10)\n", + "Y = numpy.empty((len(ens), 1))\n", + "Y[:,0] = ens\n", + "X = numpy.ones((len(ens), 1))\n", + "mediane(ens)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 131.1])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Y.mean(axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 131.1]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regression_lineaire(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 1737.8 [[ 131.1]]\n", + "1 1215.2110733 [[ 55.05276833]]\n", + "2 1196.55478823 [[ 48.77739411]]\n", + "3 1190.4919578 [[ 45.7459789]]\n", + "4 1183.56462833 [[ 42.28231416]]\n", + "5 1179.0 [[ 39.7931558]]\n", + "6 1179.0 [[ 39.7931558]]\n", + "7 1179.0 [[ 39.7931558]]\n", + "8 1179.0 [[ 39.7931558]]\n", + "9 1179.0 [[ 39.7931558]]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[ 39.7931558]])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "algorithm(X,Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "34.5" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mediane(ens)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[5, 6, 12, 14, 29, 40, 52, 67, 86, 1000]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(sorted(ens))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La r\u00e9gression lin\u00e9aire \u00e9gale la moyenne, l'algorithme s'approche de la m\u00e9diane." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quelques explications et d\u00e9monstrations\n", + "\n", + "Cet \u00e9nonc\u00e9 est inspir\u00e9 de [Iteratively reweighted least squares](https://en.wikipedia.org/wiki/Iteratively_reweighted_least_squares). Cet algorithme permet notamment d'\u00e9tendre la notion de m\u00e9diane \u00e0 des espaces vectoriels de plusieurs dimensions. On peut d\u00e9termine un point $X_M$ qui minimise la quantit\u00e9 :\n", + "\n", + "$$\\sum_{i=1}^n \\left| X_i - X_M \\right |$$\n", + "\n", + "Nous reprenons l'algorithme d\u00e9crit ci-dessus :\n", + "\n", + "1. $w_i^{(1)} = 1$\n", + "2. $\\beta_{(t)} = (X'W^{(t)}X)^{-1}X'W^{(t)}Y$\n", + "3. $w_i^{(t+1)} = \\frac{1}{\\max\\left( \\delta, \\left|y_i - X_i \\beta^{(t)}\\right|\\right)}$\n", + "4. $t = t+1$\n", + "5. Retour \u00e0 l'\u00e9tape 2.\n", + "\n", + "L'erreur quadratique pond\u00e9r\u00e9 est :\n", + "\n", + "$$E_2(\\beta, W) = \\sum_{i=1}^n w_i \\left\\Vert Y_i - X_i \\beta \\right\\Vert^2$$\n", + "\n", + "Si $w_i = \\frac{1}{\\left|y_i - X_i \\beta\\right|}$, on remarque que :\n", + "\n", + "$$E_2(\\beta, W) = \\sum_{i=1}^n \\frac{\\left\\Vert Y_i - X_i \\beta \\right\\Vert^2}{\\left|y_i - X_i \\beta\\right|} = \\sum_{i=1}^n \\left|y_i - X_i \\beta\\right| = E_1(\\beta)$$\n", + "\n", + "On retombe sur l'erreur en valeur absolue optimis\u00e9e par la r\u00e9gression quantile. Comme l'\u00e9tape 2 consiste \u00e0 trouver les coefficients $\\beta$ qui minimise $E_2(\\beta, W^{(t)})$, par construction, il ressort que :\n", + "\n", + "$$E_1(\\beta^{(t+1)}) = E_2(\\beta^{(t+1)}, W^{(t)}) \\leqslant E_2(\\beta^{(t)}, W^{(t)}) = E_1(\\beta^{(t)})$$\n", + "\n", + "La suite $t \\rightarrow E_1(\\beta^{(t)})$ est suite d\u00e9croissant est minor\u00e9e par 0. Elle converge donc vers un minimum. Or la fonction $\\beta \\rightarrow E_1(\\beta)$ est une fonction convexe. Elle n'admet qu'un seul minimum (mais pas n\u00e9cessaire un seul point atteignant ce minimum). L'algorithme converge donc vers la m\u00e9diane. Le param\u00e8tre $\\delta$ est l\u00e0 pour \u00e9viter les erreurs de divisions par z\u00e9ros et les approximations de calcul faites par l'ordinateur." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Quelques commentaires sur le code\n", + "\n", + "Le symbol [@](https://www.python.org/dev/peps/pep-0465/) a \u00e9t\u00e9 introduit par Python 3.5 et est \u00e9quivalent \u00e0 la fonction [numpy.dot](https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html). Les dimensions des matrices posent souvent quelques probl\u00e8mes." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((3, 2), (3,))" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy\n", + "y = numpy.array([1, 2, 3])\n", + "M = numpy.array([[3, 4], [6, 7], [3, 3]])\n", + "M.shape, y.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "shapes (3,2) and (3,) not aligned: 2 (dim 1) != 3 (dim 0)\n" + ] + } + ], + "source": [ + "try:\n", + " M @ y\n", + "except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Par d\u00e9faut, numpy consid\u00e8re un vecteur de taille ``(3,)`` comme un vecteur ligne ``(3,1)``. Donc l'expression suivante va marcher :" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([24, 27])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y @ M" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ou :" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([24, 27])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M.T @ y" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2018_1.ipynb b/_doc/practice/exams/td_note_2018_1.ipynb new file mode 100644 index 00000000..9ec6bb21 --- /dev/null +++ b/_doc/practice/exams/td_note_2018_1.ipynb @@ -0,0 +1,940 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Enonc\u00e9 12 d\u00e9cembre 2017 (1)\n", + "\n", + "Correction du premier \u00e9nonc\u00e9 de l'examen du 12 d\u00e9cembre 2017. Celui-ci m\u00e8ne \u00e0 l'impl\u00e9mentation d'un algorithme qui permet de retrouver une fonction $f$ en escalier \u00e0 partir d'un ensemble de points $(X_i, f(X_i))$." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1 - \u00e9chantillon al\u00e9atoire\n", + "\n", + "G\u00e9n\u00e9rer un ensemble al\u00e9atoire de 1000 nombres $(X_i,Y_i)$ qui v\u00e9rifie :\n", + "\n", + "* $X_i$ suit une loi uniforme sur $[0,16]$\n", + "* $Y_i = \\mathbb{1}_{[\\sqrt{X_i}] \\mod 2}$ o\u00f9 $[A]$ est la partie enti\u00e8re de $A$.\n", + "\n", + "On pourra se servir de la fonction ``random`` du module ``random``." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "X = [random.random() * 16 for i in range(0,1000)]\n", + "Y = [ int(x**0.5) % 2 for x in X]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1 - dessiner le nuage de points - donn\u00e9e\n", + "\n", + "Le code suivant vous est donn\u00e9 afin de v\u00e9rifier vos r\u00e9ponses." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.plot(X, Y, '.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q2 - tri\n", + "\n", + "Trier les points selon les $X$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0.014962888038782651, 0),\n", + " (0.020462778257442693, 0),\n", + " (0.022310859639508962, 0),\n", + " (0.03078728731371605, 0),\n", + " (0.03153252863972433, 0)]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nuage = [(x,y) for x,y in zip(X,Y)]\n", + "nuage.sort()\n", + "nuage[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q3 - moyenne\n", + "\n", + "On suppose que les $Y$ sont tri\u00e9s selon les $X$ croissants.\n", + "Calculer la moyenne des diff\u00e9rences entre $Y$ et la moyenne $m$ des $Y$\n", + "(en valeur absolue) sur un intervalle $[i,j]$, $j$ exclu.\n", + "Ecrire une fonction ``def somme_diff(nuage, i, j)`` qui ex\u00e9cute ce calcul\n", + "qui correspond \u00e0 $\\sum_{k=i}^{j-1} |Y_k - m|$ avec $m = (\\sum_{k=i}^{j-1} Y_k) / (j-i)$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 476.2380000000092)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_diff(xy, i, j):\n", + " m = sum(e[1] for e in xy[i:j]) / (j-i)\n", + " return sum(abs(e[1]-m) for e in xy[i:j])\n", + "\n", + "somme_diff(nuage, 0, 5), somme_diff(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q4 - distance\n", + "\n", + "Soit $i,j$ deux entiers, on coupe l'intervalle en deux : $i,k$ et $k,j$. On calcule la ``somme_diff`` sur ces deux intervalles, on fait la somme des diff\u00e9rences (en valeurs absolues) de ces moyennes par rapport \u00e0 la valeur sur le plus grand intervalle. On \u00e9crit la fonction ``def difference(nuage, i, j, k):``." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "18.56022222223197" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def difference(nuage, i, j, k):\n", + " m1 = somme_diff(nuage, i, k)\n", + " m2 = somme_diff(nuage, k, j)\n", + " m = somme_diff(nuage, i, j)\n", + " return abs(m1+m2-m)\n", + "\n", + "difference(nuage, 0, len(nuage), 100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q5 - fonction comme param\u00e8tre\n", + "\n", + "Le langage Python permet de passer une fonction \u00e0 une autre fonction en tant qu'argument. Un exemple :" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def fct(x, y):\n", + " return abs(x-y)\n", + "\n", + "def distance_list(list_x, list_y, f):\n", + " return sum(f(x,y) for x,y in zip(list_x, list_y))\n", + "\n", + "distance_list([0, 1], [0, 2], fct)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ecrire la fonction pr\u00e9c\u00e9dente en utilisant la fonction ``fct``." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "494.7982222222412" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_diff(xy, i, j, f):\n", + " m = sum(e[1] for e in xy[i:j]) / (j-i)\n", + " # On a modifi\u00e9 les fonctions pr\u00e9c\u00e9dentes pour calculer\n", + " # une fonction d'erreur \"custom\" ou d\u00e9finie par l'utilisateur.\n", + " return sum(f(e[1], m) for e in xy[i:j])\n", + "\n", + "def difference(nuage, i, j, k, f):\n", + " m1 = somme_diff(nuage, i, k, f)\n", + " m2 = somme_diff(nuage, k, j, f)\n", + " m = somme_diff(nuage, i, j, f)\n", + " return abs(m - m1) + abs(m - m2)\n", + "\n", + "difference(nuage, 0, len(nuage), 100, fct)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q6 - optimiser\n", + "\n", + "On veut d\u00e9terminer le $i$ optimal, celui qui maximise la diff\u00e9rence dans l'intervalle $[i,j]$. On souhaite garder la fonction ``fct`` comme argument. Pour cela, impl\u00e9menter la fonction ``def optimise(nuage, i, j, f):``." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(565, 711.6476814159435)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def optimise(nuage, i, j, f):\n", + " mx = -1\n", + " ib = None\n", + " for k in range(i+1,j-1):\n", + " d = difference(nuage, i,j,k, f)\n", + " if ib is None or d > mx:\n", + " mx = d\n", + " ib = k\n", + " if ib is None:\n", + " # Au cas o\u00f9 l'intervalle est vide, on retourne une coupure\n", + " # \u00e9gale \u00e0 i.\n", + " ib = i\n", + " mx = 0\n", + " return ib, mx\n", + "\n", + "optimise(nuage, 0, len(nuage), fct)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "x = nuage[552][0]\n", + "plt.plot(X,Y,'.')\n", + "plt.plot([x,x], [0,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le premier point de coupure trouv\u00e9 (le trait orange) correspond \u00e0 un des bords d'un des escaliers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q7 - optimisation encore\n", + "\n", + "Recommencer sur les deux intervalles trouv\u00e9s. La question \u00e9tait juste histoire que le r\u00e9sultat \u00e0 la question pr\u00e9c\u00e9dente est reproductible sur d'autres intervalles." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((1, 0.0), (565, 618.0710615624871))" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "optimise(nuage, 0, 68, fct), optimise(nuage, 68, len(nuage), fct)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "x = nuage[58][0]\n", + "x2 = nuage[552][0]\n", + "plt.plot(X,Y,'.')\n", + "plt.plot([x,x], [0,1])\n", + "plt.plot([x2,x2], [0,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q8 - fonction r\u00e9cursive\n", + "\n", + "Pouvez-vous imaginer une fonction r\u00e9cursive qui produit toutes les s\u00e9parations. Ecrire la fonction ``def recursive(nuage, i, j, f, th=0.1):``." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[68, 242, 565]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def recursive(nuage, i, j, f, th=0.1):\n", + " k, mx = optimise(nuage, i, j, f)\n", + " if mx <= th:\n", + " return None\n", + " r1 = recursive(nuage, i, k, f, th=th)\n", + " r2 = recursive(nuage, k, j, f, th=th)\n", + " if r1 is None and r2 is None:\n", + " return [k]\n", + " elif r1 is None:\n", + " return [k] + r2\n", + " elif r2 is None:\n", + " return r1 + [k]\n", + " else:\n", + " return r1 + [k] + r2\n", + " \n", + "r = recursive(nuage, 0, len(nuage), fct)\n", + "r" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.plot(X, Y, '.')\n", + "for i in r:\n", + " x = nuage[i][0]\n", + " plt.plot([x,x], [0,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q9 - co\u00fbt\n", + "\n", + "Quel est le co\u00fbt de la fonction ``optimize`` en fonction de la taille de l'intervalle ? Peut-on mieux faire (ce qu'on n'impl\u00e9mentera pas)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tel qu'il est impl\u00e9ment\u00e9, le co\u00fbt est en $O(n^2)$, le co\u00fbt peut \u00eatre lin\u00e9aire en triant les \u00e9l\u00e9ments dans l'ordre croissant, ce qui a \u00e9t\u00e9 fait, ou $n\\ln n$ si on inclut le co\u00fbt du tri bien qu'on ne le fasse qu'une fois. Voyons plus en d\u00e9tail comment se d\u00e9barrasser du co\u00fbt en $O(n^2)$. Tout d'abord la version actuelle." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "503 ms \u00b1 21.1 ms per loop (mean \u00b1 std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "def somme_diff_abs(xy, i, j):\n", + " m = sum(e[1] for e in xy[i:j]) / (j-i)\n", + " return sum(abs(e[1]-m) for e in xy[i:j])\n", + "\n", + "def difference_abs(nuage, i, j, k):\n", + " m1 = somme_diff_abs(nuage, i, k)\n", + " m2 = somme_diff_abs(nuage, k, j)\n", + " m = somme_diff_abs(nuage, i, j)\n", + " return abs(m1+m2-m)\n", + "\n", + "def optimise_abs(nuage, i, j):\n", + " mx = -1\n", + " ib = None\n", + " for k in range(i+1,j-1):\n", + " d = difference_abs(nuage, i,j,k)\n", + " if ib is None or d > mx:\n", + " mx = d\n", + " ib = k\n", + " if ib is None:\n", + " ib = i\n", + " mx = 0\n", + " return ib, mx\n", + "\n", + "%timeit optimise_abs(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'instruction suivante permet de voir o\u00f9 le programme passe la majeure partie de son temps." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# %prun optimise_abs(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La fonction [sum](https://docs.python.org/3/library/functions.html#sum) cache une boucle, avec la boucle ``for`` dans la fonction ``optimise``, cela explique le co\u00fbt en $O(n^2)$. Le fait qu'\u00e0 chaque it\u00e9ration, on passe une observation d'un c\u00f4t\u00e9 \u00e0 l'autre de la coupure puis on recalcule les moyennes... Il y a deux fa\u00e7ons d'optimiser ce calcul selon qu'on tient compte du fait que les valeurs de $Y$ sont binaires ou non.\n", + "\n", + "Dans le premier cas, il suffit de compter les valeurs 0 ou 1 de part et d'autres de la coupure (histogrammes) pour calculer la moyenne. Lorsque $k$ varie, il suffit de mettre \u00e0 jour les histogrammes en d\u00e9duisant et en ajoutant le $Y_k$ aux bons endroits." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((565, 235.4096814159292), (565, 235.40968141593424))" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def histogramme_y(xy, i, j):\n", + " d = [0, 0]\n", + " for x, y in xy[i:j]:\n", + " d[y] += 1\n", + " return d\n", + "\n", + "def somme_diff_histogramme(d):\n", + " m = d[1] * 1.0 / (d[0] + d[1])\n", + " return (1-m) * d[1] + m * d[0]\n", + "\n", + "def optimise_rapide(nuage, i, j):\n", + " # On calcule les histogrammes.\n", + " d1 = histogramme_y(nuage, i, i+1)\n", + " d2 = histogramme_y(nuage, i+1, j)\n", + " d = d1.copy()\n", + " d[0] += d2[0]\n", + " d[1] += d2[1]\n", + " \n", + " m = somme_diff_histogramme(d)\n", + " m1 = somme_diff_histogramme(d1)\n", + " m2 = somme_diff_histogramme(d2)\n", + " mx = -1\n", + " ib = None\n", + " for k in range(i+1,j-1):\n", + " d = abs(m1+m2-m)\n", + " if ib is None or d > mx:\n", + " mx = d\n", + " ib = k\n", + " # On met \u00e0 jour les histogrammes. On ajoute d'un c\u00f4t\u00e9, on retranche de l'autre.\n", + " y = nuage[k][1] \n", + " d1[y] += 1\n", + " d2[y] -= 1\n", + " m1 = somme_diff_histogramme(d1)\n", + " m2 = somme_diff_histogramme(d2)\n", + " if ib is None:\n", + " ib = i\n", + " mx = 0\n", + " return ib, mx\n", + "\n", + "# On v\u00e9rifie qu'on obtient les m\u00eames r\u00e9sultats.\n", + "optimise_rapide(nuage, 0, len(nuage)), optimise_abs(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C'est carr\u00e9ment plus rapide et cela marche pour toute fonction ``fct``." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.63 ms \u00b1 150 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 1000 loops each)\n" + ] + } + ], + "source": [ + "%timeit optimise_rapide(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si on ne suppose pas que les $Y_i$ sont binaires et qu'ils sont quelconques, les histogrammes contiendront plus de deux \u00e9l\u00e9ments. Dans ce cas, il faut conserver deux tableaux tri\u00e9s des $Y_i$, de part et d'autres de la coupure. Lorsqu'on bouge la coupure $k$, cela revient \u00e0 d\u00e9placer $Y_k$ d'un tableau \u00e0 l'autre ce qui se fera par recherche dichotomique donc en $O(\\ln n)$. La mise \u00e0 jour de la moyenne des valeurs absolues est imm\u00e9diate si la fonction ``fct=abs(x-y)`` et pas forc\u00e9ment imm\u00e9diate dans le cas g\u00e9n\u00e9ral. Lorsque c'est une valeur absolue, il faut utiliser quelques r\u00e9sultats sur la [r\u00e9gression quantile](http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/notebooks/td_note_2017_2.html?highlight=mediane)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 - autre nuage de points\n", + "\n", + "Comment l'algorithme se comporte-t-il lorsque tous les points sont distincts ?" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "X2 = list(range(10))\n", + "Y2 = X2" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAC4NJREFUeJzt3cGL33edx/HXu0mLtiqGdi62pWlh\ncVcEqR12owVZrIddLHrZQ3dXYYXSy65WcRHXi/+AiB6KEOp6adBD7GGR4rqw9bCHlp1pC7WNQomm\nTa04lqxKWUhD33uY6aZJJzPfJPPL7/fJ7/E4JZNvZt58yTz55jPzm3d1dwAYxzXzHgCAiyPcAIMR\nboDBCDfAYIQbYDDCDTAY4QYYjHADDEa4AQazfxbv9KabbuqDBw/O4l0DXJXW19d/190rU66dSbgP\nHjyYtbW1WbxrgKtSVZ2Yeq2jEoDBCDfAYIQbYDDCDTAY4QYYjHADDEa4AfbA+olTeejxF7J+4tTM\nP9ZMvo8bYJmsnziVv3/4iZw+80au239Njtx/KHfddmBmH88TN8BleuL4qzl95o280cnrZ97IE8df\nnenHE26Ay3Tojhtz3f5rsq+Sa/dfk0N33DjTj+eoBOAy3XXbgRy5/1CeOP5qDt1x40yPSRLhBtgT\nd912YObBfpOjEoDBCDfAYIQbYDDCDTAY4QYYjHADDEa4AQYj3ACDEW6AwQg3wGCEG2Awwg0wGOEG\nGIxwAwxGuAEGMyncVfWlqnquqn5WVd+vqnfMejAAtrdruKvq5iRfSLLa3R9Msi/JfbMeDGCKK7ld\nfVFM3YCzP8k7q+r1JNcn+fXsRgKY5kpvV18Uuz5xd/fLSb6R5MUkryT5fXf/5PzrquqBqlqrqrWN\njY29nxTgPFd6u/qimHJUciDJp5PcnuR9SW6oqs+cf113H+7u1e5eXVlZ2ftJAc5zpberL4opRyWf\nSPLL7t5Ikqp6NMlHkzwyy8EAdnOlt6sviinhfjHJoaq6Psn/JrknydpMpwKY6EpuV18UU864n0xy\nNMlTSZ7d+juHZzwXABcw6btKuvvrSb4+41kAmMArJwEGI9wAgxFugMEIN8BghBtgMMINMBjhBhiM\ncAMMRrgBBiPcAIMRboDBCDfAYIQbYDDCDTAY4QYu2TJuWF8EU7e8A5xjWTesLwJP3MAlWdYN64tA\nuIFLsqwb1heBoxLgkizrhvVFINzAJVvGDeuLwFEJwGCEG2Awwg0wGOEGGIxwAwxGuAEGI9wAgxFu\ngMEIN8BghBtgMMINMBjhBhiMcAMMRrgBBjMp3FX13qo6WlU/r6pjVfWRWQ8GwPam/jzubyf5cXf/\nTVVdl+T6Gc4EwA52DXdVvSfJx5L8Q5J09+kkp2c7FrCT9ROnbJ5ZYlOeuO9IspHke1X1oSTrSR7s\n7tdmOhmwLdvVmXLGvT/Jh5N8p7vvTPJakq+ef1FVPVBVa1W1trGxscdjAm+yXZ0p4T6Z5GR3P7n1\n+6PZDPk5uvtwd6929+rKyspezgi8he3q7HpU0t2/qaqXqur93f2LJPckeX72owHbsV2dqd9V8vkk\nR7a+o+R4ks/NbiRgN7arL7dJ4e7uZ5KszngWACbwykmAwQg3wGCEG2Awwg0wGOEGGIxwAwxGuAEG\nI9wAgxFugMEIN8BghBtgMMINMBjhBhiMcAMMRrgBBiPccBHWT5zKQ4+/kPUTp+Y9Ckts6gYcWHq2\nq7MoPHHDRLarsyiEGyayXZ1F4agEJrJdnUUh3HARbFdnETgqARiMcAMMRrgBBiPcAIMRboDBCDfA\nYIQbYDDCDTAY4QYYjHADDEa4AQYj3ACDEW6AwQg3wGAmh7uq9lXV01X1o1kOBMDOLuaJ+8Ekx2Y1\nCADTTAp3Vd2S5JNJHp7tOLA929XhrKkbcL6V5CtJ3j3DWWBbtqvDuXZ94q6qe5P8trvXd7nugapa\nq6q1jY2NPRsQbFeHc005Krk7yaeq6ldJfpDk41X1yPkXdffh7l7t7tWVlZU9HpNlZrs6nKu6e/rF\nVX+Z5J+7+96drltdXe21tbXLHA3OWj9xynZ1rmpVtd7dq1OuteWdIdiuDmddVLi7+6dJfjqTSQCY\nxCsnAQYj3ACDEW6AwQg3wGCEG2Awwg0wGOEGGIxwAwxGuAEGI9wAgxFugMEIN8BghBtgMMINMBjh\nBhiMcLMj29Vh8diAwwXZrg6LyRM3F2S7Oiwm4eaCbFeHxeSohAu667YDOXL/IdvVYcEINzuyXR0W\nj6MSgMEIN8BghBtgMMINMBjhBhiMcAMMRrgBBiPcAIMRboDBCDfAYIQbYDDCDTAY4QYYjHADDGbX\ncFfVrVX1eFUdq6rnqurBKzEYANub8vO4zyT5cnc/VVXvTrJeVf/R3c/PeDYAtrHrE3d3v9LdT239\n+o9JjiW5edaDLTvb1YELuagNOFV1MMmdSZ6cxTBssl0d2MnkL05W1buS/DDJF7v7D9v8+QNVtVZV\naxsbG3s549KxXR3YyaRwV9W12Yz2ke5+dLtruvtwd6929+rKyspezrh0bFcHdrLrUUlVVZLvJjnW\n3d+c/UjYrg7sZMoZ991JPpvk2ap6ZuttX+vux2Y3FrarAxeya7i7+7+S1BWYBYAJvHISYDDCDTAY\n4QYYjHADDEa4AQYj3ACDEW6AwQg3wGCEG2Awwg0wGOEGGIxwAwxGuAEGI9wAgxFugMEI9zZsWAcW\n2UVteV8GNqwDi84T93lsWAcWnXCfx4Z1YNE5KjmPDevAohPubdiwDiwyRyUAgxFugMEIN8BghBtg\nMMINMBjhBhiMcAMMRrgBBiPcAIMRboDBCDfAYIQbYDDCDTAY4QYYzKRwV9VfVdUvquqFqvrqrIcC\n4MJ2DXdV7UvyUJK/TvKBJH9bVR+Y9WAAbG/KE/efJ3mhu4939+kkP0jy6VkMY7s6wO6mbMC5OclL\nb/n9ySR/sdeD2K4OMM2UJ+7a5m39touqHqiqtapa29jYuOhBbFcHmGZKuE8mufUtv78lya/Pv6i7\nD3f3anevrqysXPQgtqsDTDPlqOS/k/xJVd2e5OUk9yX5u70exHZ1gGl2DXd3n6mqf0ry70n2JfnX\n7n5uFsPYrg6wuylP3Onux5I8NuNZAJjAKycBBiPcAIMRboDBCDfAYIQbYDDV/bYXQV7+O63aSHLi\nEv/6TUl+t4fjjMy9OJf7cS7346yr4V7c1t2TXr04k3Bfjqpa6+7Vec+xCNyLc7kf53I/zlq2e+Go\nBGAwwg0wmEUM9+F5D7BA3ItzuR/ncj/OWqp7sXBn3ADsbBGfuAHYwcKE20Lis6rq1qp6vKqOVdVz\nVfXgvGeat6raV1VPV9WP5j3LvFXVe6vqaFX9fOvfyEfmPdM8VdWXtj5PflZV36+qd8x7pllbiHBb\nSPw2Z5J8ubv/LMmhJP+45PcjSR5McmzeQyyIbyf5cXf/aZIPZYnvS1XdnOQLSVa7+4PZ/NHT9813\nqtlbiHDnCi4kHkF3v9LdT239+o/Z/MS8eb5TzU9V3ZLkk0kenvcs81ZV70nysSTfTZLuPt3d/zPf\nqeZuf5J3VtX+JNdnmw1dV5tFCfd2C4mXNlRvVVUHk9yZ5Mn5TjJX30rylSRvzHuQBXBHko0k39s6\nOnq4qm6Y91Dz0t0vJ/lGkheTvJLk9939k/lONXuLEu5JC4mXTVW9K8kPk3yxu/8w73nmoaruTfLb\n7l6f9ywLYn+SDyf5TnffmeS1JEv7NaGqOpDN/53fnuR9SW6oqs/Md6rZW5RwT1pIvEyq6tpsRvtI\ndz8673nm6O4kn6qqX2XzCO3jVfXIfEeaq5NJTnb3m/8DO5rNkC+rTyT5ZXdvdPfrSR5N8tE5zzRz\nixLu/19IXFXXZfOLC/8255nmpqoqm2eYx7r7m/OeZ566+1+6+5buPpjNfxf/2d1X/RPVhXT3b5K8\nVFXv33rTPUmen+NI8/ZikkNVdf3W5809WYIv1k7aOTlrV3Ih8SDuTvLZJM9W1TNbb/va1u5P+HyS\nI1sPOceTfG7O88xNdz9ZVUeTPJXN78Z6OkvwKkqvnAQYzKIclQAwkXADDEa4AQYj3ACDEW6AwQg3\nwGCEG2Awwg0wmP8DL5F7pmi3lNEAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.plot(X2,Y2,'.')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "nuage2 = [(x,y) for x,y in zip(X2,Y2)]\n", + "nuage2.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, [2, 3, 5, 7, 8])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r = recursive(nuage2, 0, len(nuage2), fct)\n", + "len(r), r" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nHQAS8X+IytouEH9+fwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.plot(X2,Y2,'.')\n", + "for i in r:\n", + " x = nuage2[i][0]\n", + " plt.plot([x,x], [0,10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La fonction va placer un point dans chaque intervalle, il y aura quasiment autant de points de coupures que de points. Presque autant car l'impl\u00e9mentation a quelques effets de bords comme la boucle ``for k in range(i+1,j-1):`` qui ne consid\u00e8re pas les extr\u00e9mit\u00e9s d'un intervalle comme de potentiels points de coupures." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "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.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2018_2.ipynb b/_doc/practice/exams/td_note_2018_2.ipynb new file mode 100644 index 00000000..14398163 --- /dev/null +++ b/_doc/practice/exams/td_note_2018_2.ipynb @@ -0,0 +1,842 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Enonc\u00e9 12 d\u00e9cembre 2017 (2)\n", + "\n", + "Correction du premier \u00e9nonc\u00e9 de l'examen du 12 d\u00e9cembre 2017. Celui-ci m\u00e8ne \u00e0 l'impl\u00e9mentation d'un algorithme qui permet d'approximer une fonction $f$ par une fonction en escalier \u00e0 partir d'un ensemble de points $(X_i, f(X_i))$." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1 - \u00e9chantillon al\u00e9atoire\n", + "\n", + "G\u00e9n\u00e9rer un ensemble al\u00e9atoire de 1000 nombres $(X_i,Y_i)$ qui v\u00e9rifie :\n", + "\n", + "* $X_i$ suit une loi uniforme sur $[0,16]$\n", + "* $Y_i = \\sqrt{X_i}[\\sqrt{X_i}]$ o\u00f9 $[A]$ est la partie enti\u00e8re de $A$.\n", + "\n", + "On pourra se servir de la fonction ``random`` du module ``random``." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import random\n", + "X = [random.random() * 16 for i in range(0,1000)]\n", + "Y = [ x**0.5 * int(x**0.5) for x in X]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1 - dessiner le nuage de points - donn\u00e9e\n", + "\n", + "Le code suivant vous est donn\u00e9 afin de v\u00e9rifier vos r\u00e9ponses." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.plot(X, Y, '.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q2 - tri\n", + "\n", + "Trier les points selon les $X$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "nuage = [(x,y) for x,y in zip(X,Y)]\n", + "nuage.sort()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q3 - moyenne\n", + "\n", + "On suppose que les $Y$ sont tri\u00e9s selon les $X$ croissants.\n", + "Calculer la moyenne des diff\u00e9rences entre $Y$ et la moyenne $m$ des $Y$\n", + "(au carr\u00e9) sur un intervalle $[i,j]$, $j$ exclu.\n", + "Ecrire une fonction ``def somme_diff(nuage, i, j)`` qui ex\u00e9cute ce calcul\n", + "qui correspond \u00e0 $\\sum_{k=i}^j (Y_k - m)^2$ avec $m = (\\sum_{k=i}^j Y_k) / (j-i)$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 15754.105018618644)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_diff(xy, i, j):\n", + " m = sum(e[1] for e in xy[i:j]) / (j-i)\n", + " return sum((e[1]-m)**2 for e in xy[i:j])\n", + "\n", + "somme_diff(nuage, 0, 5), somme_diff(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q4 - distance\n", + "\n", + "Soit $i,j$ deux entiers, on coupe l'intervalle en deux : $i,k$ et $k,j$. On calcule ``somme_diff`` sur ces deux intervalles, on fait la somme des diff\u00e9rences (en valeurs absolues) de ces moyennes par rapport \u00e0 la valeur sur le plus grand intervalle. On \u00e9crit la fonction ``def difference(nuage, i, j, k):``." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "19898.600443365925" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def difference(nuage, i, j, k):\n", + " m1 = somme_diff(nuage, i, k)\n", + " m2 = somme_diff(nuage, k, j)\n", + " m = somme_diff(nuage, i, j)\n", + " return abs(m-m1) + abs(m-m2)\n", + "\n", + "difference(nuage, 0, len(nuage), 100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q5 - fonction comme param\u00e8tre\n", + "\n", + "Le langage Python permet de passer une fonction \u00e0 une autre fonction en tant qu'argument. Un exemple :" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def fct(x, y):\n", + " return abs(x-y)\n", + "\n", + "def distance_list(list_x, list_y, f):\n", + " return sum(f(x,y) for x,y in zip(list_x, list_y))\n", + "\n", + "distance_list([0, 1], [0, 2], fct)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ecrire la fonction pr\u00e9c\u00e9dente en utilisant la fonction ``fct``." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "552.6383487080093" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def somme_diff(xy, i, j, f):\n", + " m = sum(e[1] for e in xy[i:j]) / (j-i)\n", + " return sum(f(e[1], m) for e in xy[i:j])\n", + "\n", + "def difference(nuage, i, j, k, f):\n", + " m1 = somme_diff(nuage, i, k, f)\n", + " m2 = somme_diff(nuage, k, j, f)\n", + " m = somme_diff(nuage, i, j, f)\n", + " return abs(m1 + m2 - m)\n", + "\n", + "difference(nuage, 0, len(nuage), 100, fct)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q6 - optimiser\n", + "\n", + "On veut d\u00e9terminer le $i$ optimal, celui qui maximise la diff\u00e9rence dans l'intervalle $[i,j]$. On souhaite garder la fonction ``fct`` comme argument. Pour cela, impl\u00e9menter la fonction ``def optimise(nuage, i, j, f):``." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(553, 2184.8079894060775)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def optimise(nuage, i, j, f):\n", + " mx = -1\n", + " ib = None\n", + " for k in range(i+1,j-1):\n", + " d = difference(nuage, i,j,k, f)\n", + " if ib is None or d > mx:\n", + " mx = d\n", + " ib = k\n", + " return ib, mx\n", + "\n", + "optimise(nuage, 0, len(nuage), fct)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nIlToIiIR8f8B93XWHGSZbEEAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "x = nuage[553][0]\n", + "plt.plot(X,Y,'.')\n", + "plt.plot([x,x], [0,10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q7 - optimisation encore\n", + "\n", + "Recommencer sur les deux intervalles trouv\u00e9s" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((253, 787.5154656398129), (789, 156.7106930739271))" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "optimise(nuage, 0, 570, fct), optimise(nuage, 570, len(nuage), fct)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAGQNJREFUeJzt3Xt0VeWd//H395yTEC4RUFBQiBGv\n1Lum4gWtrbpGLaN0OsNQa7XVKXam7UjrzIC//vrrH9Nxxbk4di06Y5lqrWuIyFJr25ngFJ2qpZUo\nB6IIR4qiieF+idzN9fv7Iyc0YELOztnnkp3Pay0Wycne53wWkA9PnvPs/Zi7IyIig1+s0AFERCQc\nKnQRkYhQoYuIRIQKXUQkIlToIiIRoUIXEYkIFbqISESo0EVEIkKFLiISEYl8vti4ceO8srIyny8p\nIjLoJZPJne4+vr/j8lrolZWVrFy5Mp8vKSIy6JlZQybHacpFRCQiVOgiIhGhQhcRiQgVuohIRKjQ\nRUQiot9CN7PHzGy7mb3V47F/MrO3zexNM/uZmY3JbUwREelPJiP0x4Ebj3psGXCeu18A/B64P+Rc\nIiKRUF2b4vIHXmDWI78j2dCc09fqdx26u79iZpVHPfarHp+uAP403FgiIoPX3MWr+eWbW+jo/MMW\nn1v3tjDrR6+y5J4ruPTUsTl53TAuLLoLeKqvL5rZHGAOQEVFRQgvJyJSfOYuXk3tmi20dzidfRzT\n0ems2LirOAvdzL4DtAOL+jrG3RcCCwGqqqq0I7WIREZNXSP/umw9O/a3ZnS8GVw+5YSc5RlwoZvZ\nncAM4Dp3V1GLyJBQU9fIU6838vbWfbS09zUW790/zDw/Z6NzGGChm9mNwDzgU+5+MNxIIiLFpaau\nkQf+ex37WzsCnxs3OOukcr7/udyWOWRQ6Gb2JHAtMM7MmoDv0bWqZRiwzMwAVrj713KYU0Qkrw6P\nxLfspaUj2CTEZZVjmXfT1JwX+NEyWeXyhV4efjQHWURECuqT31+W8Xx4b84cP5Jl910bXqCA8nr7\nXBGRYjN38WpeSG1jf0uw6ZREDNzh/FNG89w3pucoXTAqdBEZkuYuXs3P6zcTdEVHzOCWC0/m4dkX\n5yRXNlToIjIkJBuauW9JPU3Nh4gbGc+Lx+hablhMI/G+qNBFJNKqa1MsqmtgX48plfYMzjPg6jPH\n8cTd03KWLWwqdBGJnOraFEtWfkBrR2fGc+MlMThh1DBmXnQK82+emuOEuaFCF5FImLlgOWs27WFY\nIsbBtswv+InHjD++YGJRzokHpUIXkUGppq6Rf3w+xZ5D7Ue8sdlfmccMThw1jM984iQ+f8mkvK8V\nzyUVuogMGsmGZr7609fZfbAt0HkjSmKMHVnK1z99JrdNi+5NAlXoIlL05i5ezdK3tga6d0p5WZzR\nZSX8VcRLvCcVuogUpZq6Rv7+l2s5FPAGWBPKh/HD2y+N1FRKplToIlJUqmtTPLGigYMBboRlwK0X\nFefFPvmkQheRgqupa+Sx5RvZuuejjO9oaMDpJ47irqtOGzJTKv1RoYtI3tXUNfLYb99j0+6DgaZU\n4gajh5cwq2ryoF0rnksqdBHJm7mLV/OLNzbTGfAGKvEYfHX6FJV4P1ToIpJTyYZmHlyaItnQTJDb\nio8fVcq3bjhb0ykBqNBFJHTJhmb+78/WsH7bvkCj8VGlca44Yxxf+9TpQ3KVSrZU6CISirmLV/M/\na7cSNwu8VVtZIsaXr6zUlEqWVOgikpWZC5ZT37Qn8Hknlpcy93pNqYRJhS4igVXXpnh+7Vaamg8S\n5LqfEaVx7rj8VI3Ec0SFLiIZG+hovPKEEfzLrIs0L55jKnQROabue4vvOdSW8SqVEaUxjisrGdT3\nFh+MVOgi8jHdF/407jpAa4C1hqOGxbl+6klD/hL8QlGhiwjQtdTw2VVNLN+wk4bdBzM6Z3gihhtc\nVnn8oNqqLapU6CJDXLKhmUdefpdl67ZlfI5uhlWc+i10M3sMmAFsd/fz0o8dDzwFVALvA7PcvTl3\nMUUkTMmGZr773BrWb92X8bz48ESMq88azz266KdoZTJCfxxYADzR47H5wIvuXm1m89Ofzws/noiE\nae7i1fzyzc10BFhqWBI37r7qNL25OQj0W+ju/oqZVR718K3AtemPfwq8hAq9eCyd3/X7TdWFzSFF\noaaukQf+e12gqzfjBqWJGH907oRQplUefO1BAOZdpprIpYHOoZ/k7lsA3H2LmZ3Y14FmNgeYA1BR\noSvC8mLrmkInkALrviFW/QcfBlqlkogZV55+QuhvcL69++1Qn096l/M3Rd19IbAQoKqqKuBNM0Uk\niOraFE+8+n6/O9/3FDM4+6Ryvv+58zU3PsgNtNC3mdnE9Oh8IrA9zFAiEkyyoZkv/XhFoCKfOkEl\nHjUDLfRfAHcC1enffx5aIhHJSE1dIw+9sJ7d+1szvkVtzOCWC7XcMKoyWbb4JF1vgI4zsybge3QV\n+RIzuxtoBP4slyFF5EhB7qliwD3XaLefoSCTVS5f6ONL14WcRUT6kGxo5r4l9TTsOkimb0QZcOGk\n0Tz3jem5jCZFRFeKihSxmrpGHlq2np37WzM+5yKV+JClQhcpQjf8y0ts2HEg4+NjwC26FH/IU6GL\nFIlkQzM/evldXkxty+hy/JjBCSO1kbL8gQpdpMBmLljOG017As2N68ZY0hsVukgBJBua+fZT9Rnf\nphZgREmMO67QRsrSNxW6SB51X5L/2vuZ35x0Qvkwfnj7pboASPqlQhfJse77jb/6zs6MbpA1qjTO\nhNFl3DV9iubGJRAVukiOJBuaqV6a4vUMR+MxYI4uAJIsqNBFQhbkKk7oulXtV69WkUv2VOgiIZpe\n/SJNH37U73HD4sbIsgSzLp2sIpfQqNBFQlJT13jMMh9eEgMIbdMIkaOp0EVCsvStLX1+7WuaG5c8\nUKGLhOSm8ybymw07j3hM9xyXfFKhi4Ske4nh0re2cNN5E7XkUPJOhS4SotumVajIpWBihQ4gIiLh\nUKGLiESECl1EJCJU6CIiEaFCFxGJCBW6iEhEqNBFRCJChS4iEhFZFbqZfcvM1prZW2b2pJmVhRVM\nRESCGXChm9kpwF8DVe5+HhAHZocVTEREgsl2yiUBDDezBDAC2Jx9JBERGYgBF7q7bwL+GWgEtgB7\n3P1XYQUTEZFgsplyGQvcCpwGnAyMNLPbezlujpmtNLOVO3bsGHhSERE5pmymXK4H3nP3He7eBjwL\nXHn0Qe6+0N2r3L1q/PjxWbyciIgcSzaF3ghcbmYjzMyA64BUOLFERCSobObQ64CngVXAmvRzLQwp\nl4iIBJTVBhfu/j3geyFlERGRLOhKURGRiFChi4hEhApdRCQiVOgiIhGhQhcRiQgVuohIRKjQRUQi\nQoUuIhIRKnQRkYhQoYuIRIQKXUQkIlToIiIRoUIXEYkIFbqISESo0EVEIkKFLiISESp0EZGIUKGL\niESECl1EJCJU6CIiEaFCFxGJCBW6iEhEqNBFRCJChS4iEhFZFbqZjTGzp83sbTNLmdkVYQUTEZFg\nElme/wPgeXf/UzMrBUaEkElERAZgwIVuZscB1wBfBnD3VqA1nFgig8/MBctZs2kP48uH8cMvXsql\np44tdCQZYrIZoU8BdgA/MbMLgSRwr7sfCCWZSJFLNjTz9UVJtu1twXs8vnVvC5//99/xzF9eqVKX\nvMqm0BPAJcA33b3OzH4AzAe+2/MgM5sDzAGoqKjI4uVECm/mguW80bQH4IgS782KjbtU6JJX2RR6\nE9Dk7nXpz5+mq9CP4O4LgYUAVVVV/X0PiBSdmQuW88amPXjAf72XTzkhN4FE+jDgQnf3rWb2gZmd\n7e7rgeuAdeFFEymMmrpGHnphPbv3t9I5wCHIA587X6NzybtsV7l8E1iUXuGyEfhK9pFECiPZ0Mx3\nn1vDui37Ap1nQDwGI0oTnDOhnHk3TVWZS0FkVejuXg9UhZRFJK+qa1MsSTbR0dlJSSLGrn2t/c6L\n93Tq8SN46M8vUnlL0ch2hC4yaCQbmnnk5Xepb2xm14GBTaeMKI1z3snHaRQuRUmFLpGWbGjmRy+/\ny+/e2cn+1o4BPUfMYPoZ43ji7mkhpxMJlwpdIqf7Tc3mA610dAY714DjhieImzGrajLzb56ak4wi\nuaBCl0iork2xZOUH7PuonbaAcymJGJw0ejjnTjyOez51uqZSZNBSocugVVPXyAO169jfEnwqJW4Q\njxk3nz+Rh2dfnIN0IvmnQpdBpaaukX/79Qa27WuhrSP4u5rjRpXy7RvO5rZpumpZokeFLkWvpq6R\nx377Hhu37yfglPhhk8aUsXz+daHmEik2KnQpSsmGZlZs3MWGbft4rn5zoHMTcThzfDnf19WaMsSo\n0KVoJBua+fZT9TTuPhjoAp9uUyeoxGVoU6FLQSUbmnlmVRP/m9rG1r0tgc4dWRpnWEmcWZdO0vJC\nEVToUiA1dY08/MJ6tu/LbE8Uo+sCn06HM8aPZNl91+Y0n8hgpEKXvOl+c3PHvo/Yc6g9o3MM+MK0\nCj5/ySRNpYj0Q4UuOTV38Wpq12yhvdMD3TulNG5cNHmM7pkiEoAKXULXXeKtAdaJHzcsTidw/dST\ndKGPyACp0CUU1bUpnqvfxIGWdvYFuHKzfFicL047VW9qioRAhS4DNnfxapa+tZW2js5A0ymjhyeY\ndtoJum+KSMhU6BLYHY/W8cqGnYHOMeCUMWX81afP1GX3IjmiQpeMVNemqHmtkb0fZbY6pVsiBjMu\nOFnz4iJ5oEKXY6quTfGT371PS3tmd1E59fgRnD2hnPHlw/gTLTUUySsVunxM93rxxl0HMl6posvu\nRQpPhS6HBR2NG/DJyrFaKy5SJFToQ1x1bYonXn2fQ22dGd8QS/PiIsVJhT4E1dQ18tTrjWzYto+D\nbZmNxocnYlx91ngtNRQpYir0ISTolm2lcWNUWYnuZigySGRd6GYWB1YCm9x9RvaRJEzJhmaql6ZY\nt3kvB1ozK/KyRIwvX1mpEhcZZMIYod8LpIDjQnguCdHMBcupb9qT8fGjhyeYd+NUXfgjMkhlVehm\nNgn4LPAPwLdDSSRZe2f7PnYeaKW+tf8yjxmcM6Gcv5+pJYcig122I/SHgb8DykPIIiGYu3g1sw/0\nv2lEPGb88QUTtVJFJEIGXOhmNgPY7u5JM7v2GMfNAeYAVFToR/lce+n3O5jdx9dGlMSYeckkbRYh\nElHZjNCvAm4xs5uBMuA4M/tPd7+950HuvhBYCFBVVTWQvX8lgGvPGg/rjnzMgKvPHMcTd08rSCYR\nyY8BF7q73w/cD5Aeof/N0WUu+ffw7It558FSmg+26XJ8kSFG69Aj6IwTu97SWPqVawqcRETyKZRC\nd/eXgJfCeC4RERmYWKEDiIhIOFToIiIRoUIXEYkIFbqISESo0EVEIkKFLiISESp0EZGIUKGLiESE\nCl1EJCJU6CIiEaFCFxGJCBW6iEhEqNBFRCJChS4iEhEqdBGRiFChi4hEhApdRCQiVOgiIhGhQhcR\niQgVuohIRKjQRUQiQoUuIhIRKnQRkYhQoYuIRMSAC93MJpvZr80sZWZrzezeMIOJiEgwiSzObQfu\nc/dVZlYOJM1smbuvCymbiIgEMOBCd/ctwJb0x/vMLAWcAqjQCyTZ0Mwzq5q4c9s+SuJGc0Mzl546\nttCxRCRPshmhH2ZmlcDFQF0Yzyf9SzY0c9+SejZ/eIjRw0vYfbCNjk4H4JbSVgDuWPgqT865QqUu\nMkRkXehmNgp4Bpjr7nt7+focYA5ARUVFti83ZM1csJz6pj0AxAzS3Q3Ajv2tvZ7T1uGs2LhLhS4y\nRGRV6GZWQleZL3L3Z3s7xt0XAgsBqqqqvLdj5OPueLSO37yzE+/lT6wzwz/Fkrhx+ZQTwg0mIkVr\nwIVuZgY8CqTc/aHwIg091bUpliQ/4FBLB62dnXR0Zvd8pfEYY0aU8OQsTbeIDCXZjNCvAr4ErDGz\n+vRj/8fda7OPFW3JhmZ+9PK7vPbeLvYcaifbH1tGlcZpSf8v8NnzJ3LJoXSJq8xFhpRsVrksByzE\nLJFWXZvi0d++R1tH9rNO8RiUD0swbtQw7po+hdumHfXexE+yfgkRGYRCWeUiH1ddm2LJyg/Y39JO\nW4dnNQqPGUw/YxxP3D0ttHwiEj0q9BBV16aoea2R/R+1M9Bp8LiBO5jBVSpxEQlAhZ6FMKZRDCiN\nGxdOHsO8m6bqTUwRGTAVekDJhmaeXdXE0jVb2H2wbUDPETcoTcT4o3Mn8PDsi0NOKCJDlQo9A92r\nUn6zYQeH2oJNpsQAixmTxgznoT+/SCNwEckZFXofkg3NPLg0xRtNe2hpD17io8oS3HZZBfNvnpqb\ngCIiR1GhH6W6NsWiugb2tXQEPteAe66ZohIXkYJQoZMu8dcaaWnroDXAG5wlcaOsJM4XNRIXkSIw\nZAu9e178pfXbMy7xRKzrPirlZQnm3Tj14xf0iIgU0JAr9OraFP+xfGOg+6UMS8T4ypWVGoWLSFEb\nUoVeXZvikVc29nvcsIQxvDTBuJGlvV9aLyJShIZUoT+/dusxv56IGX8x/TSNxEVkUBpShX7juRN6\nHaEnYsaMCybqIh8RGdSGVKF3j7wf/e1G2jqgJAZ3T9cyQxGJhiFV6NBV6ipwEYmiWKEDiIhIOFTo\nIiIRoUIXEYkIFbqISESo0EVEIkKFLiISESp0EZGIUKGLiESECl1EJCKyKnQzu9HM1pvZO2Y2P6xQ\nIiIS3IAL3cziwA+Bm4BPAF8ws0+EFUxERILJ5l4ulwHvuPtGADNbDNwKrAsjWE/dW8S1dnRSVhKj\ns8M50NJBLGaUxo1DbZ1gMLosQVkizs4DLXTt8Ol0pjey6N7PIhGDGRecrDsrikjkZFPopwAf9Pi8\nCZiWXZyPO3pTipa2P2w11NnptHemt49z+PBQO9DO4Qd60d4Jz9VvBlCpi0ikZFPo1stjH2tRM5sD\nzAGoqAi+809/m1IM1Eu/35GT5y0KE84vdAKRI5xz/DmFjjAkZFPoTcDkHp9PAjYffZC7LwQWAlRV\nVWW2G3MPfW1Kka1rzxof+nMWjZuqC51A5AjzLptX6AhDQjaF/jpwppmdBmwCZgO3hZKqh+57l2sO\nXUTk2AZc6O7ebmbfAP4HiAOPufva0JL1oE0pRET6l9WORe5eC9SGlEVERLKgK0VFRCJChS4iEhEq\ndBGRiFChi4hEhApdRCQizD3wtT4DfzGzHUDDAE8fB+wMMU5YlCsY5QpGuYIp1lyQXbZT3b3fqyHz\nWujZMLOV7l5V6BxHU65glCsY5QqmWHNBfrJpykVEJCJU6CIiETGYCn1hoQP0QbmCUa5glCuYYs0F\necg2aObQRUTk2AbTCF1ERI6h6Au9GDeiNrPJZvZrM0uZ2Vozu7fQmXoys7iZrTaz/yp0lp7MbIyZ\nPW1mb6f/7K4odCYAM/tW+u/xLTN70szKCpTjMTPbbmZv9XjseDNbZmYb0r+PLZJc/5T+e3zTzH5m\nZmOKIVePr/2NmbmZjSuWXGb2zXSXrTWzf8zFaxd1oRfxRtTtwH3uPhW4HPh6keTqdi+QKnSIXvwA\neN7dzwEupAgymtkpwF8DVe5+Hl23gp5doDiPAzce9dh84EV3PxN4Mf15vj3Ox3MtA85z9wuA3wP3\n5zsUvefCzCYDNwCN+Q6U9jhH5TKzT9O15/IF7n4u8M+5eOGiLnR6bETt7q1A90bUBeXuW9x9Vfrj\nfXQV0ymFTdXFzCYBnwV+XOgsPZnZccA1wKMA7t7q7h8WNtVhCWC4mSWAEfSy81Y+uPsrwO6jHr4V\n+Gn6458CM/Mait5zufuv3L17A98VdO1YVvBcaf8K/B19bSycY33k+kug2t1b0sdsz8VrF3uh97YR\ndVEUZzczqwQuBuoKm+Swh+n6x9zZ34F5NgXYAfwkPR30YzMbWehQ7r6JrtFSI7AF2OPuvypsqiOc\n5O5boGsgAZxY4Dy9uQtYWugQAGZ2C7DJ3d8odJajnAVcbWZ1ZvaymX0yFy9S7IWe0UbUhWJmo4Bn\ngLnuvrcI8swAtrt7stBZepEALgH+3d0vBg5QmOmDI6TnpG8FTgNOBkaa2e2FTTV4mNl36JqCXFQE\nWUYA3wH+X6Gz9CIBjKVrivZvgSVm1lu/ZaXYCz2jjagLwcxK6CrzRe7+bKHzpF0F3GJm79M1PfUZ\nM/vPwkY6rAlocvfun2SepqvgC+164D133+HubcCzwJUFztTTNjObCJD+PSc/qg+Emd0JzAC+6MWx\n/vl0uv5jfiP9PTAJWGVmEwqaqksT8Kx3eY2un6BDf8O22Av98EbUZlZK15tVvyhwJtL/sz4KpNz9\noULn6ebu97v7JHevpOvP6n/dvShGm+6+FfjAzM5OP3QdsK6Akbo1Apeb2Yj03+t1FMGbtT38Argz\n/fGdwM8LmOUwM7sRmAfc4u4HC50HwN3XuPuJ7l6Z/h5oAi5J/9srtOeAzwCY2VlAKTm4iVhRF3r6\nTZfujahTwJJcbUQd0FXAl+gaAdenf91c6FCDwDeBRWb2JnAR8ECB85D+ieFpYBWwhq7viYJcbWhm\nTwKvAmebWZOZ3Q1UAzeY2Qa6Vm5UF0muBUA5sCz97/+RIslVcH3kegyYkl7KuBi4Mxc/1ehKURGR\niCjqEbqIiGROhS4iEhEqdBGRiFChi4hEhApdRCQiVOgiIhGhQhcRiQgVuohIRPx/KnLX3B40Ck8A\nAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "x = nuage[253][0]\n", + "x2 = nuage[789][0]\n", + "plt.plot(X,Y,'.')\n", + "plt.plot([x,x], [0,10])\n", + "plt.plot([x2,x2], [0,10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q8 - fonction r\u00e9cursive\n", + "\n", + "Pouvez-vous imaginer une fonction r\u00e9cursive qui produit toutes les s\u00e9parations. Ecrire la fonction ``def recursive(nuage, i, j, f, th=0.1):``. La fonction ``recursive`` tente de placer chaque point dans un intervalle distinct et elle \u00e9choue car elle d\u00e9passe le nombre d'appels r\u00e9cursifs autoris\u00e9s par le langage Python." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(946, [0, 1, 1, 2, 2], [996, 996, 997, 997, 998])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def recursive(nuage, i, j, f):\n", + " if i+1 == j or i == j:\n", + " return [i]\n", + " k, mx = optimise(nuage, i, j, f)\n", + " if k is None:\n", + " return None\n", + " else:\n", + " r1 = recursive(nuage, i, k, f)\n", + " r2 = recursive(nuage, k, j, f) \n", + " if r1 is None and r2 is None:\n", + " return [k]\n", + " elif r1 is None:\n", + " return [k] + r2\n", + " elif r2 is None:\n", + " return r1 + [k]\n", + " else:\n", + " return r1 + [k] + r2\n", + "\n", + "# d\u00e9clenche une exception\n", + "r = recursive(nuage, 0, len(nuage), fct)\n", + "len(r), r[:5], r[-5:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La fonction n'est pas encore parfait et elle retourne plusieurs fois le m\u00eame point de coupure mais ce n'est pas le plus grave car la fonction retourne quasiment tous les points." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q9 - seuil\n", + "\n", + "L'algorithme produit beaucoup de points de coupures. On souhaite arr\u00eater la r\u00e9cursion plus t\u00f4t en mettant un seuil sur la quantit\u00e9 obtenue $|\\Delta_{i}^k + \\Delta_{k}^j - \\Delta_{i}^j|$ qui doit \u00eatre sup\u00e9rieur \u00e0 50." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, [61, 253, 384, 553, 782])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def recursive(nuage, i, j, f, th=50):\n", + " k, mx = optimise(nuage, i, j, f)\n", + " if mx <= th:\n", + " return None\n", + " r1 = recursive(nuage, i, k, f, th=th)\n", + " r2 = recursive(nuage, k, j, f, th=th)\n", + " if r1 is None and r2 is None:\n", + " return [k]\n", + " elif r1 is None:\n", + " return [k] + r2\n", + " elif r2 is None:\n", + " return r1 + [k]\n", + " else:\n", + " return r1 + [k] + r2\n", + " \n", + "r = recursive(nuage, 0, len(nuage), fct)\n", + "len(r), r[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nRCQi/gdUAxqHlh+fygAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.plot(X, Y, '.')\n", + "for i in r:\n", + " x = nuage[i][0]\n", + " plt.plot([x,x], [0,10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 - co\u00fbt\n", + "\n", + "Quel est le co\u00fbt de la fonction ``optimize`` en fonction de la taille de l'intervalle ? Peut-on mieux faire (ce qu'on n'impl\u00e9mentera pas)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tel qu'il est impl\u00e9ment\u00e9, le co\u00fbt est en $O(n^2)$, le co\u00fbt peut \u00eatre lin\u00e9aire en triant les \u00e9l\u00e9ments dans l'ordre croissant, ce qui a \u00e9t\u00e9 fait, ou $n\\ln n$ si on inclut le co\u00fbt du tri bien qu'on ne le fasse qu'une fois. Voyons plus en d\u00e9tail comment se d\u00e9barrasser du co\u00fbt en $O(n^2)$. Tout d'abord la version actuelle." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "628 ms \u00b1 6.15 ms per loop (mean \u00b1 std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "def somme_diff2(xy, i, j):\n", + " m = sum(e[1] for e in xy[i:j]) / (j-i)\n", + " return sum((e[1]-m)**2 for e in xy[i:j])\n", + "\n", + "def difference2(nuage, i, j, k):\n", + " m1 = somme_diff2(nuage, i, k)\n", + " m2 = somme_diff2(nuage, k, j)\n", + " m = somme_diff2(nuage, i, j)\n", + " return abs(m1+m2-m)\n", + "\n", + "def optimise2(nuage, i, j):\n", + " mx = -1\n", + " ib = None\n", + " for k in range(i+1,j-1):\n", + " d = difference2(nuage, i,j,k)\n", + " if ib is None or d > mx:\n", + " mx = d\n", + " ib = k\n", + " if ib is None:\n", + " ib = i\n", + " mx = 0\n", + " return ib, mx\n", + "\n", + "%timeit optimise2(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'instruction suivante permet de voir o\u00f9 le programme passe la majeure partie de son temps." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# %prun optimise_abs(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La fonction [sum](https://docs.python.org/3/library/functions.html#sum) cache une boucle, avec la boucle ``for`` dans la fonction ``optimise``, cela explique le co\u00fbt en $O(n^2)$. Le fait qu'\u00e0 chaque it\u00e9ration, on passe une observation d'un c\u00f4t\u00e9 \u00e0 l'autre de la coupure puis on recalcule les moyennes... Nous allons optimiser ce calcul en tenant compte du fait que la fonction de co\u00fbt est $f(x,y) = (x-y)^2$. Il faut \u00e9galement se souvenir de la formule $\\mathbb{V}X = \\mathbb{E}(X^2) - (\\mathbb{E}X)^2$ ce qu'on transforme en $\\sum_{i=1}^n (X_i-M)^2 = \\sum_{i=1}^n X_i^2 - n M^2$ avec $M = \\frac{1}{n} \\sum_{i=1}^n X_i$." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((553, 13082.574312018376), (553, 13082.574312018447))" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def optimise_rapide(nuage, i, j):\n", + " # On calcule les histogrammes.\n", + " Y = sum(y for x,y in nuage)\n", + " Y_1 = sum(y for x,y in nuage[i:i+1])\n", + " Y_2 = sum(y for x,y in nuage[i+1:j])\n", + " Y2 = sum(y**2 for x,y in nuage)\n", + " Y2_1 = sum(y**2 for x,y in nuage[i:i+1])\n", + " Y2_2 = sum(y**2 for x,y in nuage[i+1:j])\n", + " \n", + " m = Y2 - Y**2 / len(nuage)\n", + " m1 = Y2_1 - Y_1**2\n", + " m2 = Y2_2 - Y_2**2/(len(nuage)-1)\n", + " mx = -1\n", + " ib = None\n", + " for k in range(i+1,j-1):\n", + " d = abs(m1+m2-m)\n", + " if ib is None or d > mx:\n", + " mx = d\n", + " ib = k\n", + " # On met \u00e0 jour les sommes Y?_?\n", + " y = nuage[k][1] \n", + "\n", + " Y_1 += y\n", + " Y_2 -= y\n", + " Y2_1 += y**2\n", + " Y2_2 -= y**2\n", + " \n", + " m1 = Y2_1 - Y_1**2 / (k-i+1)\n", + " m2 = Y2_2 - Y_2**2 / (j-k-1)\n", + " \n", + " if ib is None:\n", + " ib = i\n", + " mx = 0\n", + " return ib, mx\n", + "\n", + "# On v\u00e9rifie qu'on obtient les m\u00eames r\u00e9sultats.\n", + "optimise_rapide(nuage, 0, len(nuage)), optimise2(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.77 ms \u00b1 43.6 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 1000 loops each)\n" + ] + } + ], + "source": [ + "%timeit optimise_rapide(nuage, 0, len(nuage))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Carr\u00e9ment plus rapide." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "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.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2019_1.ipynb b/_doc/practice/exams/td_note_2019_1.ipynb new file mode 100644 index 00000000..7bf2a8a2 --- /dev/null +++ b/_doc/practice/exams/td_note_2019_1.ipynb @@ -0,0 +1,1003 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Enonc\u00e9 23 octobre 2018 (1)\n", + "\n", + "Correction du premier \u00e9nonc\u00e9 de l'examen du 23 octobre 2018. L'\u00e9nonc\u00e9 propose une m\u00e9thode pour renseigner les valeurs manquantes dans une base de deux variables." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On sait d'apr\u00e8s les derni\u00e8res questions qu'il faudra tout r\u00e9p\u00e9ter plusieurs fois. On prend le soin d'\u00e9crire chaque question dans une fonction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1 - \u00e9chantillon al\u00e9atoire\n", + "\n", + "G\u00e9n\u00e9rer un ensemble de $N=1000$ couples al\u00e9atoires $(X_i,Y_i)$ qui v\u00e9rifient :\n", + "\n", + "* $X_i$ suit une loi normale de variance 1.\n", + "* $Y_i = 2 X_i + \\epsilon_i$ o\u00f9 $\\epsilon_i$ suit une loi normale de variance 1." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-0.21542897, -1.02478399],\n", + " [-0.89552004, -2.24733264],\n", + " [-1.393163 , -5.40164738],\n", + " [ 1.32997878, 2.70660631],\n", + " [-1.20765567, -2.43301488]])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy.random as rnd\n", + "import numpy\n", + "\n", + "def random_mat(N):\n", + " mat = numpy.zeros((N, 2))\n", + " mat[:, 0] = rnd.normal(size=(N,))\n", + " mat[:, 1] = mat[:, 0] * 2 + rnd.normal(size=(N,))\n", + " return mat\n", + "\n", + "N = 1000\n", + "mat = random_mat(N)\n", + "mat[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque 1 :** Un \u00e9l\u00e8ve a retourn\u00e9 cette r\u00e9ponse, je vous laisse chercher pourquoi ce code produit deux variables tout-\u00e0-fait d\u00e9corr\u00e9l\u00e9es.\n", + "\n", + "```\n", + "def random_mat(N=1000):\n", + " A = np.random.normal(0,1,(N,2))\n", + " A[:,1] = 2*A[:,1] + np.random.normal(0,1,N)/10\n", + " return A\n", + "```\n", + "\n", + "Cela peut se v\u00e9rifier en calculant la corr\u00e9lation.\n", + "\n", + "**Remarque 2 :** Un \u00e9l\u00e8ve a g\u00e9n\u00e9r\u00e9 le nuage $X + 2\\epsilon$ ce qui produit un nuage de points dont les deux variable sont moins corr\u00e9l\u00e9es. Voir \u00e0 la fin pour plus de d\u00e9tail." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q2 - matrice m1\n", + "\n", + "On d\u00e9finit la matrice $M \\in \\mathbb{M}_{N,2}(\\mathbb{R})$ d\u00e9finie par les deux vecteurs colonnes $(X_i)$ et $(Y_i)$. Choisir al\u00e9atoirement 20 valeurs dans cette matrice et les remplacer par ``numpy.nan``. On obtient la matrice $M_1$." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.26184685, 0.41751593],\n", + " [-0.53354327, 0.34849608],\n", + " [-1.96298222, nan],\n", + " [ 1.51815696, 1.58374784],\n", + " [ 0.71569523, 3.12326482]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import random\n", + "\n", + "def build_m1(mat, n=20):\n", + " mat = mat.copy()\n", + " positions = []\n", + " while len(positions) < n:\n", + " h = random.randint(0, mat.shape[0] * mat.shape[1] - 1)\n", + " pos = h % mat.shape[0], h // mat.shape[0]\n", + " if pos in positions:\n", + " # La position est d\u00e9j\u00e0 tir\u00e9e.\n", + " continue\n", + " positions.append(pos)\n", + " mat[pos] = numpy.nan\n", + " return mat, positions\n", + "\n", + "m1, positions = build_m1(mat)\n", + "p = positions[0][0]\n", + "m1[max(p-2, 0):min(p+3, mat.shape[0])]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque 1:** l'\u00e9nonc\u00e9 ne pr\u00e9cisait pas s'il fallait choisir les valeurs al\u00e9atoires sur une ou deux colonnes, le faire sur une seule colonne est sans doute plus rapide et ne change rien aux conclusions des derni\u00e8res questions.\n", + "\n", + "**Remarque 2:** il ne faut pas oublier de copier la matrice ``mat.copy()``, dans le cas contraire, la fonction modifie la matrice originale. Ce n'est pas n\u00e9cessairement un probl\u00e8me except\u00e9 pour les derni\u00e8res questions qui requiert de garder cette matrice.\n", + "\n", + "**Remarque 3:** l'\u00e9nonc\u00e9 ne pr\u00e9cisait pas avec ou sans remise. L'impl\u00e9mentation pr\u00e9c\u00e9dente le fait sans remise." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q3 - moyenne\n", + "\n", + "Calculer $\\mathbb{E}{X} = \\frac{1}{N}\\sum_i^N X_i$ et $\\mathbb{E}Y = \\frac{1}{N}\\sum_i^N Y_i$. Comme on ne tient pas compte des valeurs manquantes, les moyennes calcul\u00e9es se font avec moins de $N$ termes. Si on d\u00e9finit $V_x$ et $V_y$ l'ensemble des valeurs non manquantes, on veut calculer $\\mathbb{E}{X} = \\frac{\\sum_{i \\in V_x} X_i}{\\sum_{i \\in V_x} 1}$ et $\\mathbb{E}Y = \\frac{\\sum_{i \\in V_y} Y_i}{\\sum_{i \\in V_y} 1}$." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.05543522, 0.0564421 ])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def mean_no_nan(mat):\n", + " res = []\n", + " for i in range(mat.shape[1]):\n", + " ex = numpy.mean(mat[~numpy.isnan(mat[:, i]), i])\n", + " res.append(ex)\n", + " return numpy.array(res)\n", + "\n", + "mean_no_nan(m1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque 1 :** il \u00e9tait encore plus simple d'utiliser la fonction [nanmean](https://docs.scipy.org/doc/numpy/reference/generated/numpy.nanmean.html#numpy.nanmean).\n", + "\n", + "**Remarque 2 :** Il fallait diviser par le nombre de valeurs non nulles et non le nombre de lignes de la matrice." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q4 - matrice m2\n", + "\n", + "Remplacer les valeurs manquantes de la matrice $M_1$ par la moyenne de leurs colonnes respectives. On obtient la matrice $M_2$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.26184685, 0.41751593],\n", + " [-0.53354327, 0.34849608],\n", + " [-1.96298222, 0.0564421 ],\n", + " [ 1.51815696, 1.58374784],\n", + " [ 0.71569523, 3.12326482]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def build_m2(mat):\n", + " means = mean_no_nan(mat)\n", + " m2 = mat.copy()\n", + " for i in range(len(means)):\n", + " m2[numpy.isnan(m2[:, i]), i] = means[i]\n", + " return m2\n", + "\n", + "m2 = build_m2(m1)\n", + "m2[max(p-2, 0):min(p+3, mat.shape[0])]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q5 - matrice m3\n", + "\n", + "On trie la matrice $M_1$ selon la premi\u00e8re colonne. On remplace chaque $y$ manquant par la moyenne des deux valeurs qui l'entourent. On recommence avec les $x$ manquant. On obtient la matrice $M_3$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.26184685, 0.41751593],\n", + " [-0.53354327, 0.34849608],\n", + " [-1.96298222, -3.18717541],\n", + " [ 1.51815696, 1.58374784],\n", + " [ 0.71569523, 3.12326482]])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def fill_column(mat, col):\n", + " nlin, ncol = mat.shape\n", + " order = numpy.argsort(mat[:, 1-col])\n", + " reverse_order = numpy.arange(0, nlin)\n", + " for i, v in enumerate(order):\n", + " reverse_order[v] = i\n", + " bmat = mat[order, :]\n", + " last = None\n", + " replace = []\n", + " for i in range(0, nlin):\n", + " if numpy.isnan(bmat[i, col]):\n", + " replace.append(i)\n", + " else:\n", + " if replace:\n", + " current = bmat[i, col]\n", + " if last is None:\n", + " for r in replace:\n", + " bmat[r, col] = current\n", + " else:\n", + " for k, r in enumerate(replace):\n", + " bmat[r, col] = last + (current - last) * float(k + 1) / (len(replace) + 1)\n", + " last = bmat[i, col]\n", + " replace = []\n", + " \n", + " if len(replace) > 0:\n", + " # Il reste des valeurs manquantes \u00e0 la fin.\n", + " for r in replace:\n", + " bmat[r, col] = last \n", + " \n", + " return bmat[reverse_order, :]\n", + "\n", + "def build_m3(mat):\n", + " m3 = mat.copy()\n", + " for i in range(0, mat.shape[1]):\n", + " m3 = fill_column(m3, i)\n", + " return m3\n", + "\n", + "m3 = build_m3(m1)\n", + "m3[max(p-2, 0):min(p+3, mat.shape[0])]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On v\u00e9rifie avec *pandas* que tout s'est bien passe." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [0, 1]\n", + "Index: []" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pandas import DataFrame\n", + "df = DataFrame(m3)\n", + "df[df.iloc[:, 0].isnull()]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [0, 1]\n", + "Index: []" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[df.iloc[:, 1].isnull()]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tout va bien." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q6 - norme\n", + "\n", + "On a deux m\u00e9thodes pour compl\u00e9ter les valeurs manquantes, quelle est la meilleure ? Il faut v\u00e9rifier num\u00e9riquement en comparant $\\parallel M-M_2 \\parallel^2$ et $\\parallel M-M_3 \\parallel^2$." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(115.16303767944946, 12.990990757306854)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance(m1, m2):\n", + " d = m1.ravel() - m2.ravel()\n", + " return d @ d\n", + "\n", + "d2 = distance(mat, m2)\n", + "d3 = distance(mat, m3)\n", + "d2, d3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque :** Un \u00e9l\u00e8ve a \u00e9crit avoir trouv\u00e9 ces r\u00e9sultats :\n", + "\n", + "```\n", + "Calcul_norme(M - M2) = 56,57 \n", + "Calcul_norme(M- M3) = 0.0 \n", + "```\n", + "\n", + "Un r\u00e9sultat nul doit automatiquement mettre la puce \u00e0 l'oreille puisque car il est hautement improbable que la matrice ``M`` et la matrice ``M3`` soit identique \u00e0 moins que la matrice ``M`` n'ait \u00e9t\u00e9 modifi\u00e9e. On en d\u00e9duit que le premier nombre est en fait la distance ``Calcul_norme(M2 - M3)``." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q7 - r\u00e9p\u00e9tition\n", + "\n", + "Une experience r\u00e9ussie ne veut pas dire que cela fonctionne. Recommencer 10 fois en changeant le nuages de points et les valeurs manquantes ajout\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 49.25531314, 19.070392 ],\n", + " [ 76.57432808, 18.73422968],\n", + " [ 43.43834865, 15.07553875],\n", + " [ 50.49648148, 10.11340377],\n", + " [116.28344822, 23.90363643],\n", + " [ 52.90465816, 14.88595361],\n", + " [117.28824424, 28.05673836],\n", + " [ 83.37972659, 14.28703801],\n", + " [ 48.97835736, 13.49136146],\n", + " [ 99.70723528, 27.34848088]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def repetition(N=1000, n=20, nb=10):\n", + " res = []\n", + " for i in range(nb):\n", + " mat = random_mat(N)\n", + " m1, _ = build_m1(mat, n)\n", + " m2 = build_m2(m1)\n", + " m3 = build_m3(m1) \n", + " d2, d3 = distance(mat, m2), distance(mat, m3)\n", + " res.append((d2, d3))\n", + " return numpy.array(res)\n", + "\n", + "repetition()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q8 - plus de valeurs manquantes\n", + "\n", + "Et si on augmente le nombre de valeurs manquantes, l'\u00e9cart se creuse-t-il ou se r\u00e9duit -il ? Montrez-le num\u00e9riquement." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[3.10112512, 1.1306255 ],\n", + " [2.94022724, 0.91916954],\n", + " [2.96721215, 1.14121786],\n", + " [3.35629971, 0.99870181],\n", + " [3.48138722, 1.00467304]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diff = []\n", + "ns = []\n", + "for n in range(10, 1000, 10):\n", + " res = repetition(n=n, nb=10)\n", + " diff.append(res.mean(axis=0) / n)\n", + " ns.append(n)\n", + "diff = numpy.array(diff)\n", + "diff[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import pandas\n", + "df = pandas.DataFrame(diff, columns=[\"d2\", \"d3\"])\n", + "df['N'] = ns\n", + "df = df.set_index('N')\n", + "df[\"ratio2/3\"] = df[\"d2\"] / df[\"d3\"]\n", + "\n", + "import matplotlib.pyplot as plt\n", + "fig, ax = plt.subplots(1, 2, figsize=(10, 4))\n", + "df[[\"d2\", \"d3\"]].plot(ax=ax[0])\n", + "df[[\"ratio2/3\"]].plot(ax=ax[1])\n", + "ax[0].set_title(\"d2, d3\\nErreur moyenne par valeur manquante\")\n", + "ax[1].set_title(\"d2 / d3\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plus il y a de valeurs manquantes, plus le ratio tend vers 1 car il y a moins d'informations pour compl\u00e9ter les valeurs manquantes autrement que par la moyenne. Il y a aussi plus souvent des couples de valeurs manquantes qui ne peuvent \u00eatre remplac\u00e9s que par la moyenne." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q9 - 1 valeur manquante ?\n", + "\n", + "S'il n'y qu'une valeur manquante, peut-on sans changer le r\u00e9sultat se passer de tri pour avoir un co\u00fbt lin\u00e9aire ?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si la valeur manquante est dans la colonne 0, il suffit de chercher l'intervalle le plus petit qui encadre la valeur sur la colonne 1 puis de faire la moyenne des valeurs sur les deux valeurs sur la colonne 0." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[10. , 11. ],\n", + " [ 9. , 10. ],\n", + " [ 8. , 9.5],\n", + " [ 7. , 9. ],\n", + " [ 6. , 8. ]])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def build_m3_just1(mat):\n", + " for i in range(0, mat.shape[0]):\n", + " if numpy.isnan(mat[i, 0]):\n", + " pos = i, 0\n", + " col = 1\n", + " value = mat[i, 1]\n", + " break\n", + " if numpy.isnan(mat[i, 1]):\n", + " pos = i, 1\n", + " col = 0\n", + " value = mat[i, 0]\n", + " break\n", + " \n", + " imin, imax = None, None\n", + " for i in range(0, mat.shape[0]):\n", + " if i == pos[0]:\n", + " continue\n", + " if imin is None or mat[imin, col] < mat[i, col] <= value:\n", + " imin = i\n", + " if imax is None or mat[imax, col] > mat[i, col] >= value:\n", + " imax = i\n", + " mat = mat.copy()\n", + " mat[pos] = (mat[imin, col] + mat[imax, col]) / 2\n", + " return mat\n", + "\n", + "mat = numpy.array([[10, 11],\n", + " [9, 10],\n", + " [8, numpy.nan],\n", + " [7, 9],\n", + " [6, 8]])\n", + "build_m3_just1(mat)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un \u00e9l\u00e8ve a sugg\u00e9r\u00e9 le tri dichotomique qui n'est \u00e9videmment pas une option puisque la dichotomie n\u00e9cessite qu'une colonne soit tri\u00e9e au pr\u00e9alable et c'est justement ce qu'on cherche \u00e0 \u00e9viter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 - plus de deux colonnes ?\n", + "\n", + "Pour cette question, vous avez le choix entre impl\u00e9menter la solution que vous proposez \u00e0 la question pr\u00e9c\u00e9dente ou proposer une fa\u00e7on d'\u00e9tendre la m\u00e9thode dans le cas o\u00f9 il y a 3 dimensions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans le cas de notre matrice, on utilise l'autre colonne pour ordonner les lignes. Avec plusieurs colonnes, il faudrait choisir la colonne la plus corr\u00e9l\u00e9e." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
corrd2d3
4950.97925319.3082624.616462
4960.98032321.7901582.667422
4970.97741515.0509252.430873
4980.98074621.8851683.995820
4990.9789555.9352484.137125
\n", + "
" + ], + "text/plain": [ + " corr d2 d3\n", + "495 0.979253 19.308262 4.616462\n", + "496 0.980323 21.790158 2.667422\n", + "497 0.977415 15.050925 2.430873\n", + "498 0.980746 21.885168 3.995820\n", + "499 0.978955 5.935248 4.137125" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def random_mat(N, alpha):\n", + " mat = numpy.zeros((N, 2))\n", + " mat[:, 0] = rnd.normal(size=(N,))\n", + " mat[:, 1] = mat[:, 0] * alpha + rnd.normal(size=(N,))\n", + " return mat\n", + "\n", + "rows = []\n", + "for alpha in [0.01 * h for h in range(0, 500)]:\n", + " m = random_mat(1000, alpha)\n", + " m1, _ = build_m1(m, 20)\n", + " m2 = build_m2(m1)\n", + " m3 = build_m3(m1)\n", + " d2, d3 = distance(m, m2), distance(m, m3)\n", + " cc = numpy.corrcoef(m.T)[0, 1]\n", + " rows.append(dict(corr=cc, d2=d2**0.5, d3=d3**0.5))\n", + "\n", + "df = pandas.DataFrame(rows)\n", + "df.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax = df.sort_values(\"corr\").plot(x=\"corr\", y=[\"d2\", \"d3\"])\n", + "ax.set_title(\"Evolution de l'erreur en fonction de la corr\u00e9lation\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On voit que la second m\u00e9thode est meilleure si la corr\u00e9lation est sup\u00e9rieur \u00e0 0.7. Plut\u00f4t moins bonne avant." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "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.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2019_2.ipynb b/_doc/practice/exams/td_note_2019_2.ipynb new file mode 100644 index 00000000..51016d49 --- /dev/null +++ b/_doc/practice/exams/td_note_2019_2.ipynb @@ -0,0 +1,912 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Enonc\u00e9 23 octobre 2018 (2)\n", + "\n", + "Correction du second \u00e9nonc\u00e9 de l'examen du 23 octobre 2018. L'\u00e9nonc\u00e9 propose une m\u00e9thode pour renseigner les valeurs manquantes dans une base de deux variables." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On sait d'apr\u00e8s les derni\u00e8res questions qu'il faudra tout r\u00e9p\u00e9ter plusieurs fois. On prend le soin d'\u00e9crire chaque question dans une fonction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1 - \u00e9chantillon al\u00e9atoire\n", + "\n", + "G\u00e9n\u00e9rer un ensemble de $N=1000$ couples al\u00e9atoires $(X_i,Y_i)$ qui v\u00e9rifient :\n", + "\n", + "* $X_i$ suit une loi normale de variance 1.\n", + "* $Y_i = 2 X_i + \\epsilon_i$ o\u00f9 $\\epsilon_i$ suit une loi normale de variance 1." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.56987627, -0.87585938],\n", + " [ 0.21230699, 1.85706677],\n", + " [-1.32971056, -1.31614371],\n", + " [ 0.99469359, 2.63550262],\n", + " [-1.90844194, -3.84040783]])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy.random as rnd\n", + "import numpy\n", + "\n", + "def random_mat(N):\n", + " mat = numpy.zeros((N, 2))\n", + " mat[:, 0] = rnd.normal(size=(N,))\n", + " mat[:, 1] = mat[:, 0] * 2 + rnd.normal(size=(N,))\n", + " return mat\n", + "\n", + "N = 1000\n", + "mat = random_mat(N)\n", + "mat[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque :** Un \u00e9l\u00e8ve a retourn\u00e9 cette r\u00e9ponse, je vous laisse chercher pourquoi ce code produit deux variables tout-\u00e0-fait d\u00e9corr\u00e9l\u00e9es.\n", + "\n", + "```\n", + "def random_mat(N=1000):\n", + " A = np.random.normal(0,1,(N,2))\n", + " A[:,1] = 2*A[:,1] + np.random.normal(0,1,N)/10\n", + " return A\n", + "```\n", + "\n", + "Cela peut se v\u00e9rifier en calculant la corr\u00e9lation.\n", + "\n", + "**Remarque 2 :** Un \u00e9l\u00e8ve a g\u00e9n\u00e9r\u00e9 le nuage $X + 2\\epsilon$ ce qui produit un nuage de points dont les deux variable sont moins corr\u00e9l\u00e9es. Voir \u00e0 la fin pour plus de d\u00e9tail." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q2 - matrice m1\n", + "\n", + "On d\u00e9finit la matrice $M \\in \\mathbb{M}_{N,2}(\\mathbb{R})$ d\u00e9finie par les deux vecteurs colonnes $(X_i)$ et $(Y_i)$. Choisir al\u00e9atoirement 20 valeurs dans cette matrice et les remplacer par ``numpy.nan``. On obtient la matrice $M_1$." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.48750338, -4.92138266],\n", + " [-0.59978536, -2.22258934],\n", + " [ 1.72143302, nan],\n", + " [ 1.02229479, 1.52222862],\n", + " [-0.1157862 , 1.97598417]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import random\n", + "\n", + "def build_m1(mat, n=20):\n", + " mat = mat.copy()\n", + " positions = []\n", + " while len(positions) < n:\n", + " h = random.randint(0, mat.shape[0] * mat.shape[1] - 1)\n", + " pos = h % mat.shape[0], h // mat.shape[0]\n", + " if pos in positions:\n", + " # La position est d\u00e9j\u00e0 tir\u00e9e.\n", + " continue\n", + " positions.append(pos)\n", + " mat[pos] = numpy.nan\n", + " return mat, positions\n", + "\n", + "m1, positions = build_m1(mat)\n", + "p = positions[0][0]\n", + "m1[max(p-2, 0):min(p+3, mat.shape[0])]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque 1:** l'\u00e9nonc\u00e9 ne pr\u00e9cisait pas s'il fallait choisir les valeurs al\u00e9atoires sur une ou deux colonnes, le faire sur une seule colonne est sans doute plus rapide et ne change rien aux conclusions des derni\u00e8res questions.\n", + "\n", + "**Remarque 2:** il ne faut pas oublier de copier la matrice ``mat.copy()``, dans le cas contraire, la fonction modifie la matrice originale. Ce n'est pas n\u00e9cessairement un probl\u00e8me except\u00e9 pour les derni\u00e8res questions qui requiert de garder cette matrice.\n", + "\n", + "**Remarque 3:** l'\u00e9nonc\u00e9 ne pr\u00e9cisait pas avec ou sans remise. L'impl\u00e9mentation pr\u00e9c\u00e9dente le fait sans remise." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q3 - moyenne\n", + "\n", + "Calculer $\\mathbb{E}{X} = \\frac{1}{N}\\sum_i^N X_i$ et $\\mathbb{E}Y = \\frac{1}{N}\\sum_i^N Y_i$. Comme on ne tient pas compte des valeurs manquantes, les moyennes calcul\u00e9es se font avec moins de $N$ termes. Si on d\u00e9finit $V_x$ et $V_y$ l'ensemble des valeurs non manquantes, on veut calculer $\\mathbb{E}{X} = \\frac{\\sum_{i \\in V_x} X_i}{\\sum_{i \\in V_x} 1}$ et $\\mathbb{E}Y = \\frac{\\sum_{i \\in V_y} Y_i}{\\sum_{i \\in V_y} 1}$." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.01928312, 0.09388639])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def mean_no_nan(mat):\n", + " res = []\n", + " for i in range(mat.shape[1]):\n", + " ex = numpy.mean(mat[~numpy.isnan(mat[:, i]), i])\n", + " res.append(ex)\n", + " return numpy.array(res)\n", + "\n", + "mean_no_nan(m1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque 1 :** il \u00e9tait encore plus simple d'utiliser la fonction [nanmean](https://docs.scipy.org/doc/numpy/reference/generated/numpy.nanmean.html#numpy.nanmean).\n", + "\n", + "**Remarque 2 :** Il fallait diviser par le nombre de valeurs non nulles et non le nombre de lignes de la matrice." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q4 - matrice m2\n", + "\n", + "Remplacer les valeurs manquantes de la matrice $M_1$ par la moyenne de leurs colonnes respectives. On obtient la matrice $M_2$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.48750338, -4.92138266],\n", + " [-0.59978536, -2.22258934],\n", + " [ 1.72143302, 0.09388639],\n", + " [ 1.02229479, 1.52222862],\n", + " [-0.1157862 , 1.97598417]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def build_m2(mat):\n", + " means = mean_no_nan(mat)\n", + " m1 = mat.copy()\n", + " for i in range(len(means)):\n", + " m1[numpy.isnan(m1[:, i]), i] = means[i]\n", + " return m1\n", + "\n", + "m2 = build_m2(m1)\n", + "m2[max(p-2, 0):min(p+3, mat.shape[0])]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q5 - x le plus proche\n", + "\n", + "On consid\u00e8re le point de coordonn\u00e9es $(x, y)$, \u00e9crire une fonction qui retourne le point de la matrice $M$ dont l'abscisse est la plus proche de $x$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def plus_proche(mat, x, col, colnan):\n", + " mini = None\n", + " for k in range(mat.shape[0]):\n", + " if numpy.isnan(mat[k, col]) or numpy.isnan(mat[k, colnan]):\n", + " continue\n", + " d = abs(mat[k, col] - x)\n", + " if mini is None or d < mini:\n", + " mini = d\n", + " best = k\n", + " return best\n", + "\n", + "plus_proche(m1, m1[10, 0], 0, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def plus_proche_rapide(mat, x, col, colnan):\n", + " mini = None\n", + " na = numpy.arange(0, mat.shape[0])[~(numpy.isnan(mat[:, col]) | numpy.isnan(mat[:, colnan]))]\n", + " diff = numpy.abs(mat[na, col] - x)\n", + " amin = numpy.argmin(diff)\n", + " best = na[amin]\n", + " return best\n", + "\n", + "plus_proche_rapide(m1, m1[10, 0], 0, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.12 ms \u00b1 399 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 100 loops each)\n" + ] + } + ], + "source": [ + "%timeit plus_proche(m1, m1[10, 0], 0, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "33.1 \u00b5s \u00b1 2.26 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 10000 loops each)\n" + ] + } + ], + "source": [ + "%timeit plus_proche_rapide(m1, m1[10, 0], 0, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C'est beaucoup plus rapide car on utilise les fonctions *numpy*." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "scrolled": false + }, + "source": [ + "## Q6 - matrice m3\n", + "\n", + "Pour chaque $y$ manquant, on utilise la fonction pr\u00e9c\u00e9dente pour retourner le point dont l'abscisse et la plus proche et on remplace l'ordonn\u00e9e $y$ par celle du point trouv\u00e9. On fait de m\u00eame avec les $x$ manquant.\n", + "On construit la matrice ainsi $M_3$ \u00e0 partir de $M_1$." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.48750338, -4.92138266],\n", + " [-0.59978536, -2.22258934],\n", + " [ 1.72143302, 2.83806507],\n", + " [ 1.02229479, 1.52222862],\n", + " [-0.1157862 , 1.97598417]])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def build_m3(mat):\n", + " mat = mat.copy()\n", + " for i in range(mat.shape[0]):\n", + " for j in range(mat.shape[1]):\n", + " if numpy.isnan(mat[i, j]):\n", + " col = 1-j\n", + " if numpy.isnan(mat[i, col]):\n", + " # deux valeurs nan, on utilise la moyenne\n", + " mat[i, j] = numpy.mean(mat[~numpy.isnan(mat[:,j]), j])\n", + " else:\n", + " pos = plus_proche_rapide(mat, mat[i, col], col, j)\n", + " mat[i, j] = mat[pos, j]\n", + " return mat\n", + "\n", + "m3 = build_m3(m1)\n", + "m3[max(p-2, 0):min(p+3, mat.shape[0])]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q7 - norme\n", + "\n", + "On a deux m\u00e9thodes pour compl\u00e9ter les valeurs manquantes, quelle est la meilleure ? Il faut v\u00e9rifier num\u00e9riquement en comparant $\\parallel M-M_2 \\parallel^2$ et $\\parallel M-M_3 \\parallel^2$." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(93.88020645836853, 10.054794671768933)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance(m1, m2):\n", + " d = m1.ravel() - m2.ravel()\n", + " return d @ d\n", + "\n", + "d2 = distance(mat, m2)\n", + "d3 = distance(mat, m3)\n", + "d2, d3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Remarque :** Un \u00e9l\u00e8ve a r\u00e9pondu :\n", + "\n", + "```\n", + "On obtient (norme(M-M2))^2 = 98.9707 et (norme(M-M3))^2 = 98.2287 : la meilleure m\u00e9thode semble \u00eatre la seconde (Q6).\n", + "```\n", + "\n", + "La diff\u00e9rence n'est significative et cela sugg\u00e8re une erreur de calcul. Cela doit mettre la puce \u00e0 l'oreille." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q8 - r\u00e9p\u00e9tition\n", + "\n", + "Une experience r\u00e9ussie ne veut pas dire que cela fonctionne. Recommencer 10 fois en changeant le nuages de points et les valeurs manquantes ajout\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[38.93113166, 13.65407502],\n", + " [44.59161999, 31.20763444],\n", + " [56.36123306, 39.49474066],\n", + " [40.20767715, 15.72341549],\n", + " [86.99591576, 36.28602503],\n", + " [81.35006845, 12.18103292],\n", + " [85.775306 , 37.15330721],\n", + " [79.44248685, 22.80699951],\n", + " [52.70774305, 21.74452936],\n", + " [83.59144759, 15.22093401]])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def repetition(N=1000, n=20, nb=10):\n", + " res = []\n", + " for i in range(nb):\n", + " mat = random_mat(N)\n", + " m1, _ = build_m1(mat, n)\n", + " m2 = build_m2(m1)\n", + " m3 = build_m3(m1)\n", + " d2, d3 = distance(mat, m2), distance(mat, m3)\n", + " res.append((d2, d3))\n", + " return numpy.array(res)\n", + "\n", + "repetition()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q9 - plus de valeurs manquantes\n", + "\n", + "Et si on augmente le nombre de valeurs manquantes, l'\u00e9cart se creuse-t-il ou se r\u00e9duit -il ? Montrez-le num\u00e9riquement." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100\n", + "200\n", + "300\n", + "400\n", + "500\n", + "600\n", + "700\n", + "800\n", + "900\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[3.35913762, 1.46902292],\n", + " [3.02940671, 1.50112628],\n", + " [3.06988804, 1.66400287],\n", + " [3.02826212, 1.6163169 ],\n", + " [2.98007237, 1.7964768 ]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diff = []\n", + "ns = []\n", + "for n in range(100, 1000, 100):\n", + " print(n)\n", + " res = repetition(n=n, nb=10)\n", + " diff.append(res.mean(axis=0) / n)\n", + " ns.append(n)\n", + "diff = numpy.array(diff)\n", + "diff[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import pandas\n", + "df = pandas.DataFrame(diff, columns=[\"d2\", \"d3\"])\n", + "df['N'] = ns\n", + "df = df.set_index('N')\n", + "df[\"ratio\"] = df[\"d2\"] / df[\"d3\"]\n", + "\n", + "import matplotlib.pyplot as plt\n", + "fig, ax = plt.subplots(1, 2, figsize=(10, 4))\n", + "df[[\"d2\", \"d3\"]].plot(ax=ax[0])\n", + "df[[\"ratio\"]].plot(ax=ax[1])\n", + "ax[0].set_title(\"d2 et d3\\nErreur moyenne par valeur manquante\")\n", + "ax[1].set_title(\"d2 / d3\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plus il y a de valeurs manquantes, plus le ratio tend vers 1 car il y a moins d'informations pour compl\u00e9ter les valeurs manquantes autrement que par la moyenne. Il y a aussi plus souvent des couples de valeurs manquantes qui ne peuvent \u00eatre remplac\u00e9s que par la moyenne." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10\n", + "\n", + "Votre fonction de la question 5 a probablement un co\u00fbt lin\u00e9aire. Il est probablement possible de faire mieux, si oui, il faut pr\u00e9ciser comment et ce que cela implique sur les donn\u00e9es. Il ne faut pas l'impl\u00e9menter." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il suffit de trier le tableau et d'utiliser une recherche dichotomique. Le co\u00fbt du tri est n\u00e9gligeable par rapport au nombre de fois que la fonction ``plus_proche`` est utilis\u00e9e." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
corrd2d3
4950.97847214.7877245.693286
4960.98094417.3991393.579552
4970.97996016.0644287.893382
4980.97711715.4922004.140280
4990.98120717.7977782.785862
\n", + "
" + ], + "text/plain": [ + " corr d2 d3\n", + "495 0.978472 14.787724 5.693286\n", + "496 0.980944 17.399139 3.579552\n", + "497 0.979960 16.064428 7.893382\n", + "498 0.977117 15.492200 4.140280\n", + "499 0.981207 17.797778 2.785862" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def random_mat(N, alpha):\n", + " mat = numpy.zeros((N, 2))\n", + " mat[:, 0] = rnd.normal(size=(N,))\n", + " mat[:, 1] = mat[:, 0] * alpha + rnd.normal(size=(N,))\n", + " return mat\n", + "\n", + "rows = []\n", + "for alpha in [0.01 * h for h in range(0, 500)]:\n", + " m = random_mat(1000, alpha)\n", + " m1, _ = build_m1(m, 20)\n", + " m2 = build_m2(m1)\n", + " m3 = build_m3(m1)\n", + " d2, d3 = distance(m, m2), distance(m, m3)\n", + " cc = numpy.corrcoef(m.T)[0, 1]\n", + " rows.append(dict(corr=cc, d2=d2**0.5, d3=d3**0.5))\n", + "\n", + "df = pandas.DataFrame(rows)\n", + "df.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEWCAYAAAB2X2wCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzsnXd4XMX1v9/ZXWnVJVtyk+VesQ02trENGDCmN9N7S+ghfIH8QgsmoSSEEgJJgNB7h1CMKaaYZmzce8Xdlpt6sbp25/fH3N29u9qVVrKqfd7n0aO7t83s3Xs/98yZM2eU1hpBEASh4+No6woIgiAIzYMIuiAIwn6CCLogCMJ+ggi6IAjCfoIIuiAIwn6CCLogCMJ+ggh6GJRSWik1sInHHqWUWtfcdYpQ1hal1PFNOG6SUiq7JerU0VCGV5RShUqp+a1Ybm+l1F6llLMVyvpBKXVNE47raz0LrpaoV3OhlPqvUupvts/7dH8rpZ5VSv25eWrXunRoQbcErcJ6MHx/T7VyHYLEX2s9S2s9pDXrsK9Y17FvW9ejjZgInABkaa3HtVQhoS9frfU2rXWS1trTUmUeCCilrgOqtNb3NPH43yilfrav01rfoLX+a7NUsJVp12/eKDlDa/1tW1fiQEQp5dJa1za0rrnLaGb6AFu01mUtWIbQRJRSztCXnn2d1vr5tqlZ+6RDW+iRUEq5lVJFSqkRtnVdLGu+q/X5WqXUBqVUgVLqU6VUZoRzBTVX7W90pdRP1uplVuvgwtDmnlLqIOscRUqpVUqpKbZtryqlnlZKfa6UKlVKzVNKDajne12ulNqqlMpXSk0N2eZQSt2llNpobX9fKdW5kZfOd+0eU0ptU0rtsZqf8da2SUqpbKXUnUqp3cAr4dZZ+56ulFpqfe85SqlDbGUEtWqs6/C3SGVEqOdVSqk1lqvkK6VUn5Dz36CUWm9tf1oppcKc42rgReBw6/e731of8d5o6NzWsWus33O1Umq0UuoNoDcw3SrnDhXizlBKZVplFVhlX2s7533W7/m6dd5VSqmx9fyGJyil1iqlipVpsaqQ7RGvXX0opX5r+26blFLXN7B/nWthrW/omXhGKfWFUqoMODbCuoj3aZh6+J4LXz3O9tUDeJbA719kq4PdhdPk+6HV0Vp32D9gC3B8hG0vAw/aPv8emGEtTwbygNGAG3gS+Mm2rwYGWss/ANfYtv0G+DncvtbnSUC2tRwDbADuBmKtckuBIdb2V4ECYBymtfQW8G6E7zMM2AscbdX5caDW9/2BW4G5QJa1/TngnQjn8tcxzLZ/AZ8CnYFkYDrwkO24WuARq4z4COtGAznAeMAJXGn9Vu4I1+xV4G+RyghTx7Os63qQdd3uAeaE/CafAWkYIc0FTo7wfUN/z2jujbDnBs4HdgCHYUR0INAn3L0K9LXO5bI+/wj8F4gDRlnnPc7adh9QCZxqXc+HgLkRvk8GUAKch7n//mBdz2uiuXYh5wqt42nAAOu7HQOUA6MjHBv2WhDdM1EMHIkxOOMirGvoPs0OqUumdeyFQBnQI9zvH+Z+bPL90Caa2FYFN0vlzUOyFyiy/V1rbTse2GTbdzZwhbX8EvCobVsSUAP0tf1IzSHoRwG7AYdt+zvAfbYb50XbtlOBtRG+61+wiT2QCFQTEPQ1WAJgfe5hfSdXmHMF3fC29cq62QfY1h0ObLYdVw3EhZwrdN0zwF9Dzr0OOCbCNbM/QHXOF6aeXwJX2z47MOLSx3b+ibbt7wN3RThX6O8Zzb0R9tzAV8At9dyrYQUd6AV4gGTb9oeAV63l+4BvbduGARURyrkCm9hbv2k2AUGv99qFnMtfxwhlfVLP9w17LYjumXg95JigdUR3n4Y1WKztS4Ezw/3+Ye7HJt8PbfG3P7hcztJap9n+XrDWfwfEK6XGW03KUcDH1rZMYKvvBFrrvUA+0LOZ65YJbNdae23rtoaUs9u2XI65YSKey/dBG59vvm17H+BjqxlbhBF4D9CtEfXtAiQAi2znmWGt95Grta4MOS50XR/gj75zWOfpZX2HaAhXhp0+wL9t5y7APORNua6hRHNvRDp3L2BjlOWEllmgtS61rWvoPolT4aNPQu8Tbf9MdNcuLEqpU5RScy3XQxHGAMmIsHukaxHNM7GdutjXRXOf2ut9hQq4/4qAEfXUO1x9m3o/tDr7Q6doWLTWXqXU+8DFwB7gM9sDsxNzYwOglEoE0jFNxFDKMDePj+6NqMZOoJdSymG7gXsDvzbiHD52YZrJACilEjB19rEduEprPbsJ5/aRB1QAw7XW4a4FGIukoXXbMe6uByOco5y619QeZhaujHDnf6uB/ZpCY+6NcPWK1AdS33faCXRWSiXb7tHeUZYZyi6MmAImLNP+mSZeO6WUG/gQ0wKYprWuUUp9Qoh/PqSccNcimmeioXssmvvUV+8+wAvAccAvWmuPUmqprd4N3Wv7cj+0OvuDhV4fb2N8Zpday/b1v1VKjbJu1L8D87TWW8KcYylwjlIqQZmOvKtDtu8B+kcofx7mhXCHUipGKTUJOAN4twnf5X/A6UqpiUqpWOABgn+/Z4EHfR1cynQCn9mYAqwH7AXgCRXoPO6plDqpkXV9AbjBah0ppVSiUuo0pVSytX0pcIlSyqmUOhnjj20MzwJ/UkoNt+qYqpQ6v5HniERj7o1QXgRuU0qNsb73QBXocIx4n2ittwNzgIeUUnHKdCBfjelTaSyfA8OVUudYFvzNBBshTb12sRgfci5Qq5Q6BTixnv0jXYt9fiYaeZ8mYkQ719rvtxgL3cceIMt6psKxL/dDq7M/CLovcsD353OroLX23TyZGN+hb/1M4M8Yi2MXxpK4KML5n8D4dPcAr1H3IbsPeM1qzl1g36C1rgamAKdgrIr/Yvz4axv7JbXWqzAdu29bdS4k2Kr9N6aT6GulVCmmg3R8Y8sB7sR0Ws1VSpUA3wKNiqvXWi8ErgWesuq5AeOr9HEL5iEuwrxsP2nk+T/GdJq+a9VxJeYa7zONvDdCj/0AeBDzG5Vivpcv0ugh4B7rPrktzOEXY3zWOzGuwXu11t80of55mE7AhzGugUGY/iPf9iZdO6vlcDPGR1wIXIK53yLtH/ZaNOMzEdV9qrVeDfwT+AXzDB+M7XpgXLOrgN1Kqbwwxzf5fmgLlOXIFwRBEDo4+4OFLgiCICCCLgiCsN8ggi4IgrCfIIIuCIKwn9BgHLpSqhfwOib0yQs8r7X+t1LqPkwkQ661691a6y/qO1dGRobu27fvPlVYEAThQGPRokV5WuuwA6fsRDOwqBb4o9Z6sRVHvEgp5QunekJr/Vi0lerbty8LFy6MdndBEAQBUEptbXivKARda70LE3+J1rpUKbWG5h8iLwiCIOwjjfKhKzMJwqGY0V4ANymlliulXlZKdYpwzHVKqYVKqYW5ubnhdhEEQRCagagFXSmVhBktdavWugSTUW8AJunVLsxorDporZ/XWo/VWo/t0qVBF5AgCILQRKJKzqWUisGI+Vta648AtNZ7bNtfwOQEbjQ1NTVkZ2dTWVlfcr32S1xcHFlZWcTExLR1VQRBOMCJJspFYXICr9FaP25b38PyrwOcjckJ0Wiys7NJTk6mb9++qDac6KMpaK3Jz88nOzubfv36tXV1BEE4wInGQj8SuBxYYaWdBDPbyMVKqVGYTGZbgHqno4pEZWVlhxRzAKUU6enpSN+AIAjtgWiiXH4mfM7jemPOG0NHFHMfHbnugiDsX8hIUUEQhBZk8bZCVu8saZWy9tsZi5rKfffdR1JSEnv27GH69OnExsYyYMAAXnnlFdLS0tq6eoIgdDDO+e8cALY8fFqLlyUWegROOOEEVq5cyfLlyxk8eDAPPfRQW1dJEAShXkTQgQcffJAhQ4Zw/PHHs27dOgBOPPFEXC7TgJkwYQLZ2dn1nUIQBKEO5z0zp1XLa1cul/unr2p2X9OwzBTuPWN4xO2LFi3i3XffZcmSJdTW1jJ69GjGjBkTtM/LL7/MhRde2Kz1EgRh/2fh1sJWLa9dCXpbMGvWLM4++2wSEswk9FOmTAna/uCDD+Jyubj00kvbonqCIAhR064EvT5LuiWJFHr42muv8dlnnzFz5kwJTxQEod1zwPvQjz76aD7++GMqKiooLS1l+vTpAMyYMYNHHnmETz/91G+9C4IgtGfalYXeFowePZoLL7yQUaNG0adPH4466igAbrrpJqqqqjjhhBMA0zH67LPPtmVVBUEQ6uWAF3SAqVOnMnXq1KB1t912WxvVRhAEoWkc8C4XQRCE/QURdEEQhP0EEXRBEIT9BBF0QRCE/QQRdEEQhP0EEXRBEIT9BAlbDMGXPre4uJhp06bhcDjo2rUrr776KpmZmW1dPUEQhIiIhR6B22+/neXLl7N06VJOP/10HnjggbaukiAIQr2IoBM+fW5KSop/e1lZmeRyEQSh3dO+XC5f3gW7VzTvObsfDKc8HHFzfelzp06dyuuvv05qairff/9989ZLEAShmTngLXR7+tyUlJSg9LkPPvgg27dv59JLL+Wpp55qw1oKgiA0TPuy0OuxpFuShtwpl1xyCaeddhr3339/K9VIEASh8RzwFnqk9Lnr16/37/Ppp58ydOjQtqqiIAhCVLQvC70NiJQ+96677mLdunU4HA769OkjqXMFQWj3HPCCDuHT5wqCIHQ0DniXiyAIQkuwckdxq5cpgi4IgtACnP7kz61eZrsQdK11W1ehyXTkuguCsH/R5oIeFxdHfn5+hxRGrTX5+fnExcW1dVUEQRDavlM0KyuL7OxscnNz27oqTSIuLo6srKy2roYgCELbC3pMTAz9+vVr62oIgiB0eNrc5SIIgiA0DyLogiAI+wki6IIgCPsJIuiCIAj7CSLogiAI+wkNCrpSqpdS6nul1Bql1Cql1C3W+s5KqW+UUuut/51avrqCIAhCJKKx0GuBP2qtDwImAL9XSg0D7gJmaq0HATOtz4IgCEIb0aCga613aa0XW8ulwBqgJ3Am8Jq122vAWS1VSUEQBKFhGuVDV0r1BQ4F5gHdtNa7wIg+0DXCMdcppRYqpRZ21NGggiAIHYGoBV0plQR8CNyqtS6J9jit9fNa67Fa67FdunRpSh0FQRCEKIhK0JVSMRgxf0tr/ZG1eo9Sqoe1vQeQ0zJVFARB6Pj8sjG/xcuIJspFAS8Ba7TWj9s2fQpcaS1fCUxr/uoJgiDsH1R7vC1eRjTJuY4ELgdWKKWWWuvuBh4G3ldKXQ1sA85vmSoKgiAI0dCgoGutfwZUhM3HNW91BEEQ9k8iiWhzIiNFBUEQ9hNE0AVBEJqZ//f+0jrrVCuY6CLogiAIzcxHi3e0Sbki6IIgCK2AagUvugi6IAjCfoIIuiAIwn6CCLogCEIrIJ2igiAIQtSIoAuCILQCMrBIEARBiBoRdEEQhNZAfOiCIAhCtIigC4IgtAIysEgQBEGIGhF0QRCEVqC8urbFyxBBFwRBaAVqPLrFyxBBFwRBaAVkpKggCMJ+ggwsEgRBEKJGBF0QBGE/QQRdEARhP0EEXRAEoRVQrdAr6mrxEgRBEA4QCsuqeWXOljYrXwRdEAShmbhn2ko+X76rzcoXl4sgCEIzUVntadPyRdAFQRCaAa019Y0FlTh0QRCEDsJzP23iu7U5bVoHEXRBEIRm4H+Lstu6CiLogiAIzUGSu/4YE8nlIgiC0EFIjmv7oEERdEEQhGbA7apfTnXLZ8+VOHRBEIR9wevVVNR4aJ04lvoRC10QBGEfeOjLNQy/9ysqa9o2Bh1E0AVBEPaJF2ZtBmDVzuJ692sFj4sIuiAIQnNQWF7T1lUQQRcEQdhfEEEXBEFoBF6v5tIX5/Lz+ry2rkodGhR0pdTLSqkcpdRK27r7lFI7lFJLrb9TW7aagiAI7YOiihpmb8jnpncWN+o43Qpxi9FY6K8CJ4dZ/4TWepT190XzVksQBKF94hPmtg9SrEuDgq61/gkoaIW6CIIgtHt8dnZrzEDUWPbFh36TUmq55ZLpFGknpdR1SqmFSqmFubm5+1CcIAhC2+PznDjan543WdCfAQYAo4BdwD8j7ai1fl5rPVZrPbZLly5NLE4QBKF9EPCFK0oqow9VbLdx6FrrPVprj9baC7wAjGveagmCILRPAi4X+OP7y9q0LqE0SdCVUj1sH88GVkbaVxAEYX/CZ6ArYGdRRZvWJZQGk3Mppd4BJgEZSqls4F5gklJqFOZltQW4vgXrKAiC0G7wTTTnUApvI/wo7SLbotb64jCrX2qBugiCILR7fCKuVOvEljcGGSkqCILQAP9blM3HS8wUc/Y4dG87E3TJhy4IgtAAt31gOj/PPjQr4ENXqlXcKI1BLHRBEIQm0jgLvX0M/RcEQRAs/AOLHK3T0dkYRNAFQRAagdfvQ1etMlioMYigC4IgNAL7wKLGuFxaw5oXQRcEQWgE7TnKRQRdEAShEfgk3KEUXm+bVqUOIuiCIAiNQNvH/rczRNAFQRAagU/PN+WWNc6H3kL1sSOCLgjCAc/Xq3bT967Po0q2ZRdm6RQVBEFoZ7y/cDsAK3cUN7ivXZgbk5yrNSY4EkEXBOGAx2GpbTQCbbfKJTmXIAhCOyMg6A0LtH2Xxui5uFwEQRBaAYelhFEJus2LLnHogiAI7QzVCJdLU33oEwdlNLJWjUcEXRCEAx6nJejR+MRnb8jzLzfGh54aH9P4ijUSEXRBEA54HFYESjQulIe+XOtfbmceFxF0QRAEf6doA0P5f9mYH/RZfOiCIAjtDBVllMuzP24M+twYH3prIIIuCMIBjzNMlEuNx8uoB75m+rKd/nWeEAXX7Swjugi6IAgHPOEGFhWWV1NUXsP901f714UKuljogiAI7YxwLhdHmMiXOha6+NAFQRDaF4Eol8A6X+oVu8gv3V4UdFw703MRdEEQBKfDF+VS10K3i3y1JzgMRqJcBEEQ2hnhcrlEk99FfOiCIAjtDF9q2yDt9vlc2plo14cIuiAIBzxhrXFrsb25VepDBF0QhAOecEP/fTHm7c2tUh8i6IIgHPDUN8GFWOiCIAgdCIejrsvFt9iB9FwEXRCEA5vF2wp5b4GZU9QetuhbCg1VbM+42roCgiAIbck5/53jX+5I/vJwiIUuCIJg0VITQK+6/6RmO1d9iKALgiBYeFvIRE90t44zRARdEATBoqSy1r/cEb0vDQq6UuplpVSOUmqlbV1npdQ3Sqn11v9OLVtNQRCElidvb5V/uSNFt/iIxkJ/FTg5ZN1dwEyt9SBgpvVZEASh3VNeXcucjXlht9kt9I5Ig4Kutf4JKAhZfSbwmrX8GnBWM9dLEAShRbjrwxVc8sI8sgvL62yrtYUotrfZiKKhqT70blrrXQDW/66RdlRKXaeUWqiUWpibm9vE4gRBOBDIKa1k5Y7iFi1j9a4SACqqPXW21Xrr5nLpSLR4p6jW+nmt9Vit9dguXbq0dHGCIHRgjnvsR05/8ucWLcMXmvj09xvqbuvggehNFfQ9SqkeANb/nOarkiAIByqlVfvuw77jf8s46tHvIm73ifYnS3fW2VZjbdNasz2MS6a901RB/xS40lq+EpjWPNURBEHYN95fmM32goqI2+szwpdtL2L837/lpZ83c+4zv7RA7VqWaMIW3wF+AYYopbKVUlcDDwMnKKXWAydYnwVBENo9DXV27imp4u1521qpNs1Lg8OXtNYXR9h0XDPXRRAEocVYnl3Eyh0leKPItRXr6phjLiU5lyAIBwRTnpoNQI/UuAb3ra7tOBkW7XTM15AgCEIYoolSiWbCiioRdEEQhLalNIqRnnbNv+XdJWH3qaypG6PeERBBFwRhv6GwvLrBfexpcaeFCV0EsdAFQRCajWhcJ0Xl1dz36SqqagPWdDSCHs3YIfs5OxIi6IIgtDs8Ufi5H/1qHa/O2cK0JQErOxpB90Sh6DWejjliVARdEIR2RzSi67FE1y7+hWU1/uVBU7/gw0XZLM8uavS5OyoStigIQrujIQN91vpc3lu4vc6+dgu9xqP54wfLAFj3t0AG8P1Z0MVCFwSh3dGQy+WLFbv9y/aRn0XlNeF2j2ow0f6ACLrQMLuWw17Jvya0Hg1Z0UoFlu3aXxDBh27fP5o49I6KCLpQP1rD61Ng1j/buibCAURj0tja9yyKIOh2De+oIYnRIIIu1E9ZHlQUwt49kfdZPQ3WzWi9Ogn7PY2yoiN0ijb5fB0YEXShfgo3m/+V9cwiM/OvMOc/rVMf4YDA50P/atVuPlyUXWe7zYMSZKFHClucsXJ32PUtxTsxf2OZ+xoABqvtULyjVcoVQRfqp8AS9Apb6NfCl2H6rWbZUwuFW6CqpPXqVF0Or5wGe1a3XplCq+LrxLz+jUX+SBU7kXzokYb+hztHS3K4czWpykyQ8bX7TnhiWKuUK4Iu1E/BJvO/0iboi16Fxa9DdRkUbwdvDVS2oqBvnwtbf4av/tR6ZQqtikdr1u6O7p6yD+WvPVDCWSIggi7UT6jLpWov7F4J2gM7l0L+Rmt9Kwq6j5bwi5blwcbI05ftt5QXwH+PgNx1bVaFK1+e71/2ejXZ9cw6pGxOl/cXBlwy+3OMeTSIoAv1Y3e5aA07FhkxB8heAAWWoFeWtIzAhkU1vEtT+ekf8Nb5xpV0ILF6GuSsatO+kB9/zfUve7XGHROdPK3eFTAmaltQ0Cc5lrAl7hJ6khu0foTaBA3MgtRaiKAL9eNzuWgPVO+F7fMABUndjaD7LHTtgZqON6luHbbMBm8tVJe2dU1al/I88z8ho8WL+vHX3AYnkFi6vYi4GGejz+3xaFyOlnnhX+D8EYCRjo3+dYc7VvGZ+x6ucraPKC8RdCEyVaXmQe/c33yuLDaC3vUg6Hc0ZC8MWOjQun50oNmtoopC2LPSLFcdYIJelm/+J7asoM/ZkMeVL8/nqe831LvfLe8uJdYZWZ5UBM2u9Wpi6jluX1DW/aZtLcThagsAQ1X7mINUBL09kr/RNIH3hepy2PAtFG1vuivE527JPNT8Ly+A7Qug1zjIOgz27obt88ERY7a3lghGepr3lW1z8b8kDjRB91vo6Y0+NLuwnM+W72T9noav2YbcvQDk761qdDl2wt0Bj8xYS0WNh2RnDSnsrfeFsC/YBf2emLcAGOwweWU6J8a2SJnRIsm52iNPHWZcGPfVE/vdEPOfh2/vNcuJXYwo+/9GQ3K3hs9huVt+dQ5kMBjrvKoYek2ALkPMPlUl0GMU7FraNh2jzcnW2YHlthL0rb+YFlE0v09zUmYJumqcm6O0soZjH/uBGo9mQv/OvHvd4fXun7/XxImnRyF8b8zdGnU9istreOYH01r8gNvpE7eL4d73qN6HtOZDuyezdnfgPqjPjIgnEP+eTNu5HkXQ2yO6GZLrb/4JOg+ACb8z0Sg7FxuLXVu+y+RMI+49bSKf0Dn4HFaEy9+XxvOqAn79yqzvPR5SssAVB7WV5vhdS+sffNQSNHcn7NY5EJtk+graStBfOdn4se/Y2PC+zYnPQm+kG6usyuPPHb6npGGr2zc0Py0hvKCvdV/JD95R3FDzBxZuKYi6Hic88aN/uQ+7ALjU8TV3x73E0MpXqMQd9bl8pCXEBH0OuFwMz18+Bj4IPmZIt2S2bw5E3cTQup3rIuj7I54a4z4YdQmMuzawvroMdq+AHYth5xLzt+7zwPa0PuaYSXeZzwWb0Qld2FiYCm7MSyKxK3TqZ9wePUaZmPDMUbCIjm2hV5WaF9/QU2HN9ODvUlMJH14N4683fQcthe8F5RfXVsTnQ9eNi+P2jehMjHWSW9qwoJdZJnNCbN2WQKzLQZyq4WTnAqiBwgiZE6HuaycnTNlX8QkAnSllZxME/eTh3Zm7KfBSUf5Sja1+4vDufkF3Ohy8e90EhmWmcOr9a/zHrI+7otHl7gsdU9BL9xhhGnR8W9ekZdHaRI6U7DKRF/4/T8jnkHUlO6GmDPpODD5fbCL0nmD+fFQWw65lRtyXvQvzngsIev4GqlJ6U1yQaD57qox17vNhZ421BN3ysTe1U/SHh8HhhKNvj/KARvrQ89bDjLvg1Megc7/w+2yfb1pGg0+xBN1moc97FtZ+Bt0Pbn5Bz1kDn94MF70F7uQ6m39Yl8PgbslkpsU3b7mh+F4i0bR6aiph0w8w5GR/Eq1uKXFsyiujssYTOTpl43ecvONt/sfZdQR5S15ZnYRcxRWRBb08gi/F7u7Y156W0O/hO58GRqkNcF+qf1vfjAQG9k8P2bP16ZiCPu8Z+PlfcPtGSGx8J067w1MLOxaal9ShlwXWez3w4gkmPrgp9Dmy4X3iUo1I9Tsaairgh4eMhe+pgewFFA65gr1bEgL79xofWD7i/6DnaEgfCE638dv3ORIyBjaunqs+NgNaBp5grP3mpGg7vH4WlGQbt1MkQd86x/iPBx5nPvsEvSwvkGmytrJ56wYmD072fNM6yBobtCm7sJzrX53NG71nkHnlQ3VdYs2Jx/IBR2OhL3gRvp4KtyzH4zVRMV1T3GzKKyO3tIpenRPqHuP1wBe3c3zRBpxModar+XrVbq57YxGz7jiWSY/90KjqOioKuM45nec9p2MX0N4qkEROKUBDjKqNypP0u0kD/H54IEwcvDnJiJ5pXJCxGQKGOC5H+4gv6ZiCXmAF8m/7BQ46va1r0zS0hqVvw7ovjCvD18R3xQX2yZ5vxHz870xkicNl+3OGfLbWLXvHWJRpfSCpS+Pq5AtZK8uDPavAU822TuPx4qCUBGP99LJZ98ndYcS5ZvnCN+DjG+C5o+G0f8Koi6Mvt7IE0PDF7XDVV9BcD0dFIbxxVsD6rK8FsXW2eZkkdgVUQNB/eMi4qhwuqN23yIw67FoWcHmV7gqO4/fU8t6C7RyqNjBuz7uwfjKMvDD8ebbMNq0uR+PjtoHg7xWNoG/4xvwvy8PjNgZV9xRz3+btjSDoaz+DfBOqmKny6LvtI16vMC3IVTvN7+Igctlaa5QtuumiXY8yOmYOC71DWKwH+9f3tQm6LxolNko/dmgryO1yolSg0eJzuYzrl053R+Tso22Z2LF9vFYaS6HV+22PSmgP1FYHQv0aonALTLvRuDq1aBa3AAAgAElEQVRGnAPnvwbxnYwLw8eSt4zAH/sns8+wKcbHO/hEY0n2Pwb6HmncIFljLEGyRDwa6zyUxK7mf1kubPoenG7Wxo4AoIREU5ceI8MfO/gkuOFnU4dPboCPro++Y7GqBFJ7mRfY8vca3j/asMWN3xsROeu/VjkR6pOz1vQ5DDzBvEzcyUb8c9fBwldg7G/Nb9PcFvoPj4DbaraX7jItJIua6nLeW7CdLlg5dHwDvEIp2AyvngqrP2l6PcrsPvsG1Ki63ETiAFQWBrlcgPB+dK3h5yf8H5+MeYqjVt9Hv/LlAMQ4ze8ZR+QJnkOH9CfVhu8w7aMCWRV9d4m7nvPacYbcV7FOR5DzxL+sFKgQ6fSpeHE2l7m+jaq8lqBjCnqRJehbfm5436q9wZkCw7FziRnuXVw3TWeDeGqNcEy7CR4bBP8ZBbm/mm0vnQSvnAqbZ9U9rtT0xDPlSTjj3zD8LMgaZ3y5PlZ9DENOMW6RaNm9wvzvc0Tjv0uST9BzTD6T3hPYVW5ukRxvKrrnGHDVE26W2hOunA6T/gQr3ofnjjFWaH14ak1UyahLTWz7N39pvmgZr2WZdR+JsbojWOg/PQoxCTDuOvPZnWzE/+s/m36HSX+yInqa0UL3WeeH/95EtZTuMgO1LL5bsY2c0iq6KOtaFEYwFKpNXDd51kCdkp2w+tN6i56/uYBaj80aLrPNRtWQhb51tulLAago8neKdvVb6GHEc/OPluFiWnMjlPkuTq85j8uKF48n+PomU843sbczTG3xD+n/csUuTnziRxxeU04VwZEoPgvdo5X/xR+thR6K3eWyyH09xzmXADCga3LQbwUEjIw3z+N3rulNKq856HiCXllimtJxaUa86nv4vR4z2857l0XeB2Dt57D+a3htiumAbAiv1/hcP/8jPD7UNOtXfRLwgeasNvXcPte4hV47HV47A7bNC5yj1LIkkrsH1vUeD3m/Bj7XlMEhFzVcHzs+H3H/SY07DgLW/Zrp5jsMmOy3uG6ruZ7Sk6PI8+Fwmk7VKz8zFudLJ8GazyLv7xPZuFQ49R+mdfDjo9HVt6G2rb+trMCdEt5Cz1kLKz8y0UC+/hh3MmyZBeu/gqP+n3FFudxBFnSjmPVPWB4S3/bDI+Y7j78eUnqY++GTG/yb352znu4pcQxNssq0W+hf/zlwPo/Vcegzcl6bAu9fblqLYfh5fR4XPPcL/5m5PrDSbqE3dE03zMRvq1YW+S3nrskmiiQv3IChn58wqSIOvwkAlzIvjUqvcRHFOMJb6KMd6xnk2MFdrnf85Xyzeg+/7tmL8prv7bC1KJIp5xinMSCcSvu3uVXkzlU7OqR1Ylwupm7pKnDvdEmOC25J+1j+PuSuqbu+Fel4gl5kDbE9+DyMHz3MhfWx8GWTTKp0d+R9wEQaJKSbWXlenxJ+/kytIXsRfDUVnhgOr5xiXCJ9joQL3oDb18N5r5h9CzcHLKqznoWTHjJlvHwivHGOOY9vBqAkm6Db/dNgLDdfJ120TLobbl4Kab0adxwELPRFr5r/A44lp9S4GTbqnhS7M6M/V98j4YZZ0G24eaHOfTb8fr4XclyqiZYZcyXMfcZcLx+/fg3PHmVaW4BPUIoqqtldXI8bxGdtKgfEpYT3oc/6J8TEmw5eH+7kgEAOmGz+J3Uz1m9j8Xrgp3+avg0fPut8wu8hPg2SewRabBab9+Rz4WG96Kp8LhfrfsrfaBJo+VwsXivao3CL9d/aL0Jr5O355ns9+9MmtuaXsSWvjI9nLw/sEMlC15oFm/Pxbvg24M6rKPLnLY+LcZIaH+M3ADxezcdLsvGU7DERMYddAyk9g05ZbQm6S3m51fU/uqlC/zaXQ1HiMC3TDFVCrRXrvnKnuV9Kvcbf3UPl+4/5OPYvdFOB1rgTc23cBAQ9nLfu7Qt68tRkFw5PFV0o4k7XO5zhmIPb5WhcvMpH1za8TwvTAQXdetBGnGuGnEdyu5TuMREEYDq16iN3rXFRXPK+cbu8NsVYLcU7jOX91VT490h4cbIJ68scBee+BLdvgAteM77tmHgjGgnp5uHyPYBdD4LDb4RblsEJD5im54uTTRgdyvhmfWQeajrffIw4F5zBTcoGccVGjuRoiNik4M/dDia3tMqf7Ki+MLKwJGYYF8zQ02DGnTDj7rrTr/tSHMSlmP+T/2IE9cs7AtbinpWwe3kdP/Ha3aWc+8wcthdEGJlnF3R3ckDkaqvN71i1F9Z9CQefH5zDxB4+6LI6yjr3D85bEy2560xLy+7WsFvnYFppIS3DeFXDReN60dnnQy/PMy+kpW9Zny0fss+t5OtX8t0/YdyMuaVVLFu1hje7vUNPRyH3T1/NbR8sY9n6LYGddiyq+x08NXB/GutfuhpH/noWxh+OdrqNhW79Rk4HZCTF+i30z1fs4g/vLeP1mYsB2Ky71YnSqdRG0Dvl/MKtro/4R8xz/m0Xu+dwPMZYG+bYSq3XS3l1LRtyzEu9Shvpej72CTIwIj/QEfzCdVqdrHZBn3HL0Sz7y4mYvgLzd8SCmzl9/b0cvfgPLIi7kd+5pvNk7FPEe4oZ2iOZg1VI/0U4wyCnfUy20vEE3XfjZgyBnmMid4x+fQ/UVsDA4+sX9JpK05ztcpCxKi9+11g5jw8zs4x8cCXMfwHSB8CZ/zUifvE7poXgTqp7vk79jJj7LCWfuMYmwpG3wK3L4TDfm1wHR3TEJgR3Oo5spLtlX7GbL6c8Cg4HuaVV9Ek3UQsljRV0MN/pgtdh/A0w92n44IqA68LrDaQn8L1MEtPhuD+byB+f2PtEa/EbQaee4FjDhJKvuOj5uRFEPYLLZfl75oUx7xmTVTG0A9ku6DGWoKcPMO6gxsba7zSCxl4r5WqodQ7GQi/LDXRKA0f2TaJHajydvAXUYkWv5K83kVEA5ZZlarkeKNlhfPw+QQ/jivxu1k+8H/MXJhZP595hu/lubQ4LtxaSYh+qbm9J+LCen0tc3wNw57KuFHgT2LFrF+c+MwcAh1J0SXb7BT1WV3OH613mrlgLwOxtlXhUSFCdpwYHXrzW+gGOwEvtr/pJJjuWBnb1atbsKsHXN2ofgXmcc3HdOgNOa8T1c7FPMEiZ/rGEWCepCTEsHfI6c903caxjqflNctfQMy/YOOy8aToPnnUwj3YL6eT86Jqw5TVIuJdlM9PxBL1oq3n4EzobAd65tK5vdPNPplPuyFuNQNaURfYN5q83llzXoeZz/2Pgsg+NmJ7yKFz7HfwpGy7/GA69NPAQRqJT34CFnpBRd7CIOxkOuSDy8T63S6e+Jsa7rRh/PTUeL/ll1QzsasS20Ra6D4cTTnnEuJ7WfBZoAf36ZWAfj+3cY35rBvF8NdWIiW/b9rl1JmC4P+E9PJV7w4p6VY156DUq2EJf/Jr5v9EIFL3GBdc3nKD7Mk421krfYYlNWa55gYVa52AEHQ1lOazAxPCfO9ABK/5Hl9rd/Oqwyl7wknHNJGfaBN0nbNq0Ln2hi5UB9wWA3jqHU+b/hgSnF1BM7FrFsB4p9EyLJ1WFGDy1VWawl8/FZYvuqUnK5IrTT6DAk0D2rt1+33aXZDcZSW6qS/Ng/bcM3PYBN7o+5YbaNwFYkuOhrDq4c/KfpbezKe4yvJV7CYeLwOChWq9mRXZx2G0qxPddo0yr1mHb5yTHArPOam2mbf2K7qqQm10fhy0bIOOnqYz0rOKg3s2UVydvfcP77CMdS9C9HhO33XO0sbr6HGlG9z06AJ4cYwaQfHqz+evU13RoxSSYm94TIXQpx1gQdDkosK7vRJjyH/PQNRTZEUrnfubBylsfEIFQkrqGXw+mYxSaFnbYzPisrUFdjcCVVBphnblmDw9/uTayqyMSh99oXFS7l8NLJ5gYbzA5Z+yi6nCaUZ0l2TDrcUu0lLE+F78edMqk2kI+Hr+W0soaLn5hLtmFgTqt3WUEYMHWokDkyp7VJo87mIiipG7mXrHjTgks+wV9gPkfKXwwEj4LXXtMKGiodQ6WoBt2uHoDcNBPN8KHV+NVTt5TJ5uNS9+ChAwWJE/GW1FoXhBe24jJws3hLfQ10/G+fha53mTmT34XkrvjKs3mk98fycu/OYxUVUa5ig/anx8eMh3DECTo1X2PZfJB3SgmEV1RRJLbxcJ7jme4Yzs35tzP//b+Bt46l5QcE63VU5kO1zX5Xrbll+PVdb3SKdvDzxAVrwIdrB6vZsWOEn8j0m6hO0IEvdr6Lva49gTrXKGp0g911J/Gl6+nmg7x5sDTRIOoEXQsQf91hukU9bks+h9rwv7GX2c63yqLTcRK8XYzuCUmPtCUj+R2yV1jHoL0Ro5ujESnvubhzV4Q2ZedWI+g+yz0xvrO9xFfkzb3tFfgxAeBQEyx3UJfv6eUm95ewrM/buSYf3zP7R8sqzNku16GnWn86hVFJkrp5Ifh5sV1Wz69J5gInzn/MZE/sYkmhHPZuwE3A1DYYyI9VjzLO1eMoKSihoueD4h6Ta0Ru1nr8wOdoj7rHMx5eo2r21MWyYcOkB9Z0Esqa4KvRW2Vma4vzYg0M+6qa51DUKTTN4xjYdrJMPkeuOY7Hhv5BR95jgrcM4NPYsZWcGiPyXxpF4nCrYFUxj4f+oIX4f0r2BYzgKscf+OY8YdBahYUZxPrctApIYZUyijSNvehT8iry/hyxS6KSmwZBwefRGZaPKUkkqT3kuh2kuEog+k303/vIqZ5jSHiqjatIV+n7l7imbkmp06YIYC7NCSXuPV8dycQa17r1azaWczwTPOytYci/j3mpaARotUOE0LptCW5O8v5MwvdN+CMZNhFYueS4MF++4JXBD2Yec+aLH9DTjWfHQ4YfQWc+Dfjp73ue5Ol7p5c4zsHpq22LJVIgp6z1lhfjbHC68Nn7XlrjD89HLEJ5mV07kt1tyV3g2Fn1Y14aWZySir5atVuHpmxloue/4VD7vuKU/49iwt/6gxH3GTtYwS9b0YiTodiT0kVN729hIRYJ5/edCQXjO3FB4uyWbi1sL6i6tJrHFzzLRxzJ4y+MvJ+R/3RtKzWfWFEcfSVUJ5H+QoT57tDp5M79jYoz2f4jnd585rxlFQYS31HUQVey3r9cUM+OjbZTHS97F0YdJKtLuY6PzlzPXd/vIKPFmdTqi0Rd7oDfRyxCcbVEcHlkr+3iiMf+o4XZtkEf90X5j4YfIr5nPdrXescgiz0lTVZfD7gLyavTdYY4mJjqazx+I2DWoebAm29cMoLbC4XjKvP73IpgpkPwOd/pLrf8ZxZeieTxxxk8pNYgg6QEh9Diioj35sYOI81bqK4pJjfvbWYW940nZP/rDkP9/AzcDoUXncqqZRxmfoSHu0HOxaxLetM/lzzGwAcIbNXeVyJzFy7h+owg9MdNSEul4xBQCC8EWBvRQ3rc/ZyxADTeR2axXCiY6V/ucYSdLvLJVMVkKFKcGfPhvXf1KlDvTSXhW5vTbUQ+zT0Xym1BSgFPECt1nps/UfsA3tWG9/48feBs4FqWw9hWVUt32wo5cxYqCovwR3O/Z27xvhrmwu7iNcXbXJFPSP7Lngt8rYmUFnjYeWOYpZuL2LJtiKWbi9iR5HpmHQ5FMMyUzh3TBYbcvYG+SlzLZdL12Q3qfExvPHLVqo9Xl67ahyHZKUxoEsS05bu5OMlOxjXr5F5RtIHwLF3N7DPQIhJNH0gnfubEMKUnsSuMjHYt9XcwF97HWYEevZ/OOSwa3jzmvFc+uI8Lnr+F+7uYuq/s6iKvNo4uniqzQti/PUmxhyg9wTKqmr518z1eLXm7Xnb+I17J/cpqHW6cdqHnKcPCEy5F8I787dRWlXLewu3c93R/VFbfjapEHqMNH0v858Lb52Dif93xKCVgw1lqRzrCgzhj49xUuPReDv1w7F9HuU1Hgox1nR1aS6xPkFXDiPovs8zHzD/R1/B6yn/R8nq9Vw8zmoppGaZ6B6tcbscpKkycry2wWvWSyu3oAjoTll5GcTAMj0ApzUIyJnYiV41ufxf1Yv+w7wZg6kgDo8rEVdtsEgP6dWd7zYVU+2ua6E7QwXd16KxsXp7Dh6v5qTYZUyO/RdxIbHlCQTcQrFxcVBd1xUDkPpRI1JS+JjzZOOPCUcHcbkcq7Ue1aJiDibxkyuufosuhG9W76EM87bekB0m90JNhem8tPvP95XkHsayg8gWegujtWbepnz+Mm0lZzz5MyPu/Yrznv2Fv32+hqXbixjVO417TjuID393OCvvP4lPb5rIA2eOYFy/zpRW1fo7unwWekaSEfRqj5ffTRrAMYPNAKREt4uThnfjixW7qKptAevD4YDuJvUA6QOM9TnqUlw1xgXg0Q5S4lzmxVBZBHOf5ZCsNN68ejxF5TXM2WAiS7wo1hZYD3envqZ15Igx91P3Q1i8rRCPV/PKbw7jrlOGkldjDZKpcvLO/O2B+kQIXayu9fLG3K0kxDrZlFvGpqU/wjsXmbIu+9i0AGMSTJRTuE51hwPu3MwdPV7Gg9OfMxwg3kozW5ncB4Alm/ZQaFnoeTm7A1ZfapZxNdpbosfchT7937y9aCdj+nRicDfLsk/tZfzi5fkopUhTZRRRN2Irr9C0vEb1MM9QlQ60YuOS6ybFc3U3z1GVOx13RWAiZa0cjB5gWiEfeo6qc1xtRUhQQ1qfOvus3WYiYIZve5sJjjWB+HyLWFtoonY2k4ukuWmOeQ4aoGO4XCoKTVP54PMblXHuk6U7jIUHzP91e90dctcBOhDh0hw4HNDJuiGbGg++D/y6p9S4Tp6fy/8WZZPkdnHt0f15/vIxzJ96HLPvmszTl4zmmqP6M6ZP56AUoSlxxnoqtTo/c0or6ZQQQ6zLQb+MRMb168z/O2FwUHlnHdqT4ooaflgXPBO6jxpPhIEq0eJrPfk6JQ+9zJ90SaNIinOZcQFDT4dfnoaKQkb2MqIebw3dHtQtmUU5Vj1GX2F+o5gEM6mHK5YFmwtwKBjbtzMH90xlL8blUqljeWTG2sDox/QBJrokJMb7y5W72FNSxd/PPpiDndvI/OwyY3Vf/okJw3Qnwa0rYeL/i/g1dWwSH2ywvpfNsPT9PotKzIsgvnwHhRhhLt69KeCX7dTP9C/ZBX3SXczfUsim3LKAdQ5G/MG8AIAUyv0vCTteK8olxWWEyO7/TkqrO/doUtYwAMpiOhNTa/O7xyYzwXKVPFpbNxTXWRvSuR5mUNyG7N30T6jCvT38uBP7aFCvM7KLRLviI27bH9jXbIsa+FoppYHntNbPN0Od6rL4DRNTHq65GoH8vVXMWp/Hn0f3hZUwf10255TXkGqfhSQ3TIRLc9CprxlV6BtKH0JOaSUfLd7BdUf194dRNRc//ZrL2t2l/PXM4Zw3ppffwouGlHhzbUoqaklLiCW3tIquycbaef7yMUAg74aPiQMzyEhyM33ZTk4aHujc01pz54fLeX9hNumJsXRPjaNHajw9UuPonhpHZloc/TOSGNmrgTBQn6CnW4LeqQ+F3Y+g8+7ZeFHE+15Ik/5kMvr98jRMvoeRvdLoekRvmAPHHdSd937sweExQ+nU82wznd6Qk/354hdsKWRYZgpJbhdZneIp0SbuvoJYiitq+PsXa3j8glG2SJeNJvrJ4uXZW+ifkciUnnuZ7H6YEk8ssZdPw5kS8I03lOZ58TbbCEdn4J7wCfoHm2I4Csj07iJbd2GNtzc9lvyb2tT/Mw9x534mZ4odpXhn/jaS41ycdrCtLn5Bz4ZuI4inkiISCcVbVc5JjgV0cpqOyEoCFnpaet17u3NGJrCMHQlD6FIUiCHHncQhWWnExTioDON1SLS5S3DFgzuZWmc8Lk8g1UJOfgGX9MhFFYS3cif2TQIrFZPTEzlFg8oYZKKs9lP21UI/Ums9GjgF+L1Sqk72f6XUdUqphUqphbm54a24BolNhOHnNMrX/fmKXXi8mqOHG2s5xlPOOwtCetNz1pimt08smosxv4GJfwg7ztjr1fzhvaU8/OVa+t/9BR8uakJCsHrwWXdnHdqzUWIOGPcFgfDE7MIKuqcaQXc5HXXE3Ld+RM8UtuYHW1mfLtvJ+wuzOf2QHpw4vDtdk91kF5bz6bKd/OOrdfzhvWWc+fRs1u0urXPOIIafY/pNbJ3EuwZdAkApCQH/dvcRpjN57jP+UZQ9rPwiJ4zowUbdkwur/8K09ZY745znYfQVVNd6WbK9kMP6mpZfZlq8P4SviliuPLwPHy3ewS8b8wP3iS3SZfG2QpZtL+K2YcU4Xp9CbIyLi6ruZl5BXYGsjx9/DTwbLttL3vfC+infWNBZKg+Xy0XOCU8S7y3D88NjACwvq9tyLSqv5ouVuzk79F5ItSzg4mx/a6PYFuVS7UoiT6cwuHgWz8U+waU7/gZAjQoIepcMW8oKi1iXg9T4GJbFjw/ZkESsy8GYPp3qHAMQo2wibYWJ1sYHtwA6q1Ime+fUHc1sMSYzkLI3qaSe0NKmphjuIOyToGutd1r/c4CPgXFh9nleaz1Waz22S5dG5uf2cdjVcP4rjTpk2tKdDO2eTP+e5sa7K+ETMn+8Hc/sJ83cmsU7jIWePhCcMXXSc+4TQ0+Do28Lu+n1X7Ywe0Mg/8RdHy1n7qb8sPs2BV+CIRVtilkbPgu9uKKGGo+XDTl7Gdq9blM8lC5J7qC0qbuKK/jzJysZ06cT/77oUB4652Be+e04Ztx6NMvuPZHVD5zEG1ebW2X1rgYyK8almJejrSM8r9dJTK56jF91SNN80l3G5TDHl0TMXIt+GUmsf/AUjhyYzpcrd6NtPo2VO4uprPEyzhL0GKeDhGQjPBXazR0nD6VX53ju+WQF1Sl9ABUUi/7Kz5u50T2DUxZeBS436opPyInJMu4+i93FlUF+8XAU27bbJ0uIjzXLPh/3d55RdEtxc8xRk/gu60bc2lijTy+v69r6aPEOqmu9XHRYSCdjfCfjcirONn0PEBS2GJt5CBXEkVpjYsh90SK1NkF3J4e8QKz494ykWBYyLHibNaL6vDFZTB4aIWQ3w3LlWYLuTQjWitFqPX2LF0YePW2LldehqW3ttELHZFvSZEFXSiUqpZJ9y8CJwMr6j2odtheUs2hrIVNGZZpOyqNvJ65zFod7FuD85h5481wzrP/XGdB1KF+v2s2oB75mzsbwcznmlFb6/cr7woacvTz05Vr/ZABgLLAb3lzE1vwG8s1ESSAZf+NJ9btcatiYu5dqj5dhmSkNHAUZ1pBvr1fj9Wpu/2A5tV7N4xeMxBnGpZQQ62JC/3RcDsWve8KPErTz3I8bOfSBr/2ftdZs0mEShXU9yKRkmPecGWpvy+US43Rw8ogebMotY31OoMwFm401P7ZvQKBS08xyjSOWRLeLB84cwcbcMj5cnmfcFVbH6O6cPZy29k7uUK+jBp8M1/+Eu+fBnDSiO1+u3G3CDYEJD83k+Md/qlPd4vIaXpuzhVveXcKOooAgucK4XA7JSuNY9SK/q7mVbpYbbPJv/sySGDOaONz1eGf+Nkb1Sqv7GyoV6ES1LPRCe6foYVdTpeL8ecRLuh9OjXZS5rBNXBEX4iobfg5gRoxOXxWSq9yyqs8+NIuXf3NYnXqWpgyEs54xH3wDuULclb91zcCha8yct+GwjS+ojq/HcNzTLiSqxdgXC70b8LNSahkwH/hcaz2jeapVP+/M38awv8zgvk9XBY0M9PHpMpOkZ8rITHPzTr6HtBtmcGHyG1za+W30lZ+ZkYjjrocJv+ez5bsorazlutcXBYXtAczekMekf/zA+L/P5O6PV7BmV9Pmzaz1ePnj+0uJj3Vy/5nD/eufu9wEB1316oKmD6232FVc4e/Aa4KBHvChV9b4v+dBPRoW9C5Jbmq9muKKGt6ct5WfN+Qx9bSD6JMe2e0Q4zQdreujEPSHvlxLYXkNf/poBRUR5pL0c8ydxlqb/S9b5kBzMU4a3g2l4IsVgZwhC7YU0C8jkS7JgY609M7G3+2LZ540uAtOhzL3Wuf+JnRx1zLcLx3LcWoRhRPvhQvf9EewnDWqJ6WVtfywLoeCMiOK9hfenA153PLuEg77+7fc++kqpi3dyY+/BpJ32V0uyVaY37mjsyhUqVQR659Mwh0TQ9Z17zJnwnOk9x6OJ+RxXp+zl0vG1Q0BBAKx6GEsdA4+j2qHuR7FOpG9F/yPY6v/SYWy/Z72aJ1rvoMznwZMRBRAtba5NsLMlWon+f9mmz4Jh8sv6M6U4OH2GcqaBCWz4XQYRYdEkWvloCmBZce+diVGS8vPNdpkQddab9Jaj7T+hmutH2zOitXHoq2F1Ho0b87dytGPfs/xj//ILe8u4YWfNjFnQx4fL9nBYX07kdUpYFE4HIrfTuzH7J2wUA03+a9PfRSdNZY5G/M4alAGaQkxXPnKfH9Gtxkrd/PbVxbQq1MCpx3cgw8XZXPKv2dx/rNzmLbUNGej5b8/bGRZdjEPnnUwfW1CN7ZvJ569bAzbCsr53ZuLeHHWJu6fvool26IfrFNR7eGxr9ZxzKM/8MIskxRMNeHm8fvQK2pZvbOEWJeD/hkN+4J9YjhvcwF//2INk4Z0iSwkNgZ3S2Z9TsOzGh01yPhT35m/jTOe+pk1u+o5JmMQHHKhGSHpS5tsNcG7Jscxtk8nZqw066trvczdVMCE/sHug6z0JMq0G68V/qaUIiHWSVmVx/jRd69Av3gC1VUVPN7zcTod//+C3qBHDEgnIymWaUt3siw70Nl5//RVTHrsBy55cR7fr83hosN68fGNRxDjVNR4Am4gu6CP6JnCkxcfGhSl0s3WwuvSpRtHnHwRY/t3YZcO/h5Jbhenj+xBWHyCXmHus+KQTtEahxHWHFd34tyxZOuuOOxWgt1Czwqkx/AJeo3Ldr5Qv/dvvwz+HBNnrl98Z+MKAmJSwuRPGXam2e+o2+CEv4b/XkDP7t1Ni+HUxyLuE1Snzs3ch1JnAEcAABKgSURBVNaGdIywxRC2F5QzslcqP91xLLceP5i+6QnM31zAg1+s4ZIX57EhZy9TRvWsc9y5o3uSGh/DS7MCs7+s21NK3t5qzhiZyRtXj8eh4IqX5vHsjxu58a1FjOiZwvvXH84/zh/J3D8dx9RTDyKntIpb3l3KEQ9/xz+/XsfOovonPliRXcx/Zq7nzFGZnHZIDxJsHVQxTgcT+qfz4NkHM2djPn/7fA2vzN7CjW+FzyBnR2vNV6t2c/zjP/LU9xv8Q/ShaRZ6YqwLh/JZ6KUM7pYUtiM0FN9DfOeHy4mLcfLouYdE5cMf2DWJbQXlftdEJIrKazh2SBfeuHocxRU1PDJjbf0nPuYO4ytdZDXDbXU5ZUQP1u4uZXNeGfM3F7C3qpbJQ4PFo1enBLbprhTFBPy9SW4X5dW1Jsunp4rdncZwSuXfOfq4M+oU73I6OP2QTGauzWHWrwE33mu/bKVnWjz/unAU86cezwNnjuDQ3p0YEtJP4bT50JVSnDEyk1hbbu5uKXXD8sb06cQOHdyReOaoTBJiI1ifqb1MTv4di/EoF9k62E1R6zSCXurOJCXORa/O8Tx0ri0oISZ8+F96ohH2GqfNPROalTTUXeMjId0/zN6RbPtNEqzvNexM8/+4P8ORN4c/B5i0Gee/Yoy2SNhz3dTnc+9gdIhJoudvLmDh1gJunGTyrWwvKGfCgHQy0+K5+bhB/v3y91axamcJ2YUVnDumrqAnxLq4dHxvnv1xI9sLyunVOcHfQXnkwAx6psXz2lXjuOi5uTz85VqOGpTBc5eP8T8UnRJjufbo/lw9sR8/rc/lzblbeer7DTz9/QZOGNaNyyf05ciB6UFiVlnj4Q/vLyU9KZYHpphBMvbYbx8XjO3FMYO74HY5ePnnzTz5/Qa8Xh0xrHFrfhn3fbqK79flMrhbEu9dN4FhmSkcfN/XYfePBodDkRwXQ3GFcblE7MAKwWehF1fU8NQlh/qnI2uIwd2S0Ro25u5leGbkafZyS6sY2j2ZowZ1YcYtR3HbB8v4PkLcO2DcIqMugSVWul3bA3vyiO488Nlqvly5i5ySKtwuBxMHBgthVqd4zqu+j9FZ3TjfWpcaH8Pa3aV4z7gC1akvV33upmt3Zx3r3seZozJ5dc4W3py3lSHdkrn3jGFkpsXTN0yL5+CeqazcEXDl2X3o4egW5voe2juNmToDe3zJxfW1knyhi6unUZw2jKqK4NQXHkvQq5OzcDkdzLpjcvDxSlnRR8ERLb6Qy2q7oIda6JFe9offaCLaINiHPvpy6DbCTFEYDdG4UOwTgOxHkS8d4tX01ard/OOrdSzPLqKq1sOukkp6h5lZPD3JzdGDu3DJ+N64XeF/pCsO74tDKV6ZvQUwPvJ+GYn0tGb8Hp6ZypvXjOcPxw/mpSsPC2vhOByKSUO68uKVh/HT7cdy/TEDWLClkMtemsfJ/5pFvm0arse+WseGnL3847yR/hj4hAjhhN1S4khLiCU5LgatqZNuFMwL4olvfuWEJ35i/uYC7jntID6/+SjG908nOS6GHlaYYbjOyGhIiXexIWcv+WXVUXWImnq7cTkUU0Zmcvoh0c9qNKibedDr86N7vZq8vVX+l0Z6ktvfsRZTn/AdfXsgUZVN0DPT4hnZK40vV+xm5to9HDkwo054Z6/OCZQRT3xcwAq9amI/lmcX89aSXOY4x7Imp5yrjuwXsSUyqlcafdITqK71MrJXKkcMzAgr5gAjega/zFwN/HZdw1joaQmxlMcHX/vQ8wbhmz2odCdJA49g6qnBYzG8lgWuOtUdteln4h8izl1bGmszBkIt9EiTdY++wj/vaFBG0rFXmc7uaJud/Y5peB/7AKzBJ0Xer4PRIQT9luMHkZ7o5t5PV5FdWIHWplncFLqnxnH6IT14b8E2CsuqmbcpnyMGBA/6GNkrjVuOH0Ssq+HL06tzAneePJQ5d03m0fMOYd2eUt6ca+Ldf9mYz0uzN3P5hD4cPThgccSHsdDt+IR/9obgqJvv1u7hxCd+4t8z13Py8O58d9skrjmqPzE2t8hXfziat68dH7SuMWwvqGDORtNqiaZDFCA5LoZpNx3JP84/pFFl+foSHvpyDTUeLwVl1SzaWsj/FmXz2Ffr+P3bizn1P7Oo9eqgTkullP9FFpFOfcx0djGJdZrUp47ozoodxWwvqOC4g+q2QrqlxBHjtEahWpw/JouJAzN45Mu1PPHNr3ROjDVRVBFQSnGm5fYb1St8/LWPg0OEN9LL2Pfy6B6hBbS7zxT+U3tWvWX58VnoQGyf8Vx7dHCqZ+0yz1d818aNdj5vTBaHZKWScNFLgcFXsSGdoskR/Pp2LAt9t7NH2Nwu9RJu4plQ7PPDHjs1fKK8DkiHEPSUuBjuPHkIS7YV8a9vTZL43ulNE3SAqyf2p6zaw90fr6Cs2lOnyd0U4mKcfrfJW/O2klNayW0fLKNP5wT+dGpwagGHQ5HsdnHbiYPDnuvkEd05JCuV/3tnCTNW7mZ7QTnXvr6Qq15dSIxT8fY14/nPxYeGbXqnxMX4M9LtKwd1j07QwbRsIrWKIuF7Ye4pqWLQ1C8Z/ddvOPeZOdz2wTKe+XEjK3cUs9YaeOTz0/u45qj+gdwkkTj5YTOvaUiTetKQgIgfN7Ru55vTobh0fJ8gl5NSir+ffTAer2bh1kIuHd87rOvMzkWH9eKIAekNuq6GdE8mPTHW3+Jo6GUcyaV15PjDWdDvxnqP9WOf3zN0gg8w2SWBTpmNSyvdNTmOT2+aSI8eWTD5z2ZlqMCm9YKpYXIr2bEEvVNS05/zeqmxWegOZ9ALrsVo7PzATaBD+NDBhG29PX8b062QxHAul2g5OCuVcf068+XK3SgFhw+of1h2Y/jNEX357asLOOup2eTtreb9Gw4P67ZZcX/kZl5KXAxvXjOeK1+ez+/fXozLoXA6FHedMpSrjuwXVcuhOQhKk9DCXDi2F4O7J9MvI4G+6Yn06pxAjNPBYQ9+S25pFWlNqYsz/CjgvhmBe8c3EjaU+6YMr7Oud3oCU087iKe+28BlE+pxRVhkpsXz9rUNp0F2u5zMvmsy909fzTvzt9XrLktyu0hyh39sjxiYwREDM+C+Bos0kSWJXc01CiNmscnp1Oxy0qXXoDAHR0mc1fJwhzEMYhroZ4lLBWcs7thmSmsdSk1IIEPo/AM3L4Fv/mLqseTN5ikz0qxpzUiHEXSHQ/HAlBFMefpnYpwOuiTtW47iqyf2Y/7mAoZnppCW0Hw3zTGDu9AnPYGt+eU8dM7BjGooV0kEUuJieOPq8dz6rold/9MpQ8lMa/nEQu9cO4HbPljGBWPrJkhqCZ6+ZDTfr8vhkfPCu2tev2oc905bxSE9m3Ydw+F2OblsQm//cP/GcNmEPlwyrnez5+CJi3H6J8eI5ENXhPef16H3EbBtTsP79Z0YcfaskWfeSvmOE0hJrMcP3xA9RsEp//j/7d19jFRXGcfx77MstCBFYaEVpGVZ3a28FENFBEGRQhuyJF1MoaktFoVgaI2YNFZR/ANfE5u0Jk0w2jQE2kRtQVM3Rv/QtliLUiW2UorBIGIlVgu2kqpVEB//OHfZ2dl5ubt7596ZO79PsuHembMzz8PMPHvn3HPPgc7rh/67ZtEfnBqVqHNF16+0FBX0SR3h2oLXX02woI9woroYGqagQziy3vzeDk6c/seIP1ArZ13BwvZJrJo7eE6KkWhpMb560zyO/eW1yqMMYhh/SSsPbqjtrMTFFr+1jQPbrqveMCGr501l9bzyfaqzpk7g0S2LE3/eL60Z/hz4SRfzPn0niSt1J5brPx/gQ98ruUj0IBWm02h9w0QmdC2t/hiVtLSE1cSGa/wUErsYZ8FGOLSrf7+vy6VvNE25FcL6zr+MHgfnB1/EODQ6Qh/ks93JzIw4qsVqUigAFnW0sagjuW4caQ4bl8xk4cxJzJte/ttIqfMmg4weW3aceEO5enWYZbWaMePhXDRSanyZBZ277w0L5PytaA3RrdGskOXmeOkr6KW6S9o6wyLzsdX+StGGK+giedXSYhWL+dYVnbGHkubCsrvjtRvX1l/QS53ghfBtYdOP4ehjYQH2nVG76MrUAX8AC+dTr3TR0VC7UFIY794Qo1xEBDa8p31Y/f5DMvUdtX38JN15ENbtYUBXRjRJ2EUf3Q+bnwjb4yaFrpcpV/ff33dV7uROmPOBsD1gArC+o+oSR+jXrBt8WyWmgi4iabnrt4PnWalnl8+COWv6a+263TC3qKBPmz9gMZKLFpZYLGfl58O/Czb231Z4MdMVcwe2X/apocWbwhQDKugiEkyY1n/pfSO56UF42/Xw9sHz6pTVfQ/sKDpxPHFGuG1q4YirqKCPnRj+gBQq14WybFvp21tU0EVEKrvq3bB+X22GOI6+FFbfF765dK2K9zvLP1P6dh2hi4hk7F2bwpqt16yFT58ceF/P1/u3p80PUzeXk0JB1ygXEZG4xhbNyzP/tnBytGVU5VEsiz7Wv5ZrDamgi4iMRGuVK81n98Cqr6QTSirPIiJSbPn2eDMv1qPWIVy41RpvfYAkqKCLSDaGOuyvXty6d+BY9lK2PB2uLj3yXVjyiXTiQgVdRGRoum6o3ubN0VxBU4e2RsBIaZSLiEhOqKCLiOSECrqISE6ooIuI5IQKuohITqigi4jkhAq6iEhOqKCLiOSEeam18mr1ZGangT8m9HCTgTMJPVajaMacoTnzVs7NIW7OM9x9SrVGqRb0JJnZIXdfkHUcaWrGnKE581bOzSHpnNXlIiKSEyroIiI50cgF/YGsA8hAM+YMzZm3cm4OiebcsH3oIiIyUCMfoYuISAEVdBGRnKj7gm5mq8zsmJkdN7NtJe6/xMweie5/xsza048yWTFyvsvMjprZYTN73MxmZBFnkqrlXNBurZm5mTX88LY4OZvZzdFr/YKZfSvtGGshxvv7KjN70syejd7j3VnEmRQz22VmL5vZkTL3m5ndH/1/HDaza4f9ZO5etz/AKOD3QAcwBvgNMLuozZ3AN6LtW4BHso47hZyXA+Oi7TuaIeeo3WXAU8BBYEHWcafwOncCzwITo/3Ls447pbwfAO6ItmcDJ7OOe4Q5vw+4FjhS5v5u4EeAAYuAZ4b7XPV+hL4QOO7uJ9z9HPAdoKeoTQ+wJ9reB6wwM0sxxqRVzdndn3T3f0W7B4HpKceYtDivM8AXgXuAf6cZXI3EyXkzsNPdXwVw95dTjrEW4uTtwIRo+43An1OML3Hu/hTwSoUmPcBDHhwE3mRmw1o9u94L+luAPxXsn4puK9nG3f8LnAXaUomuNuLkXGgT4a97I6uas5nNB6509x+kGVgNxXmdu4AuMztgZgfNbFVq0dVOnLx3AOvN7BTwQ+Dj6YSWmaF+5suq90WiSx1pF4+zjNOmkcTOx8zWAwuAZTWNqPYq5mxmLcDXgA+nFVAK4rzOrYRul/cTvoX9zMzmuvvfaxxbLcXJ+4PAbne/18wWAw9Hef+v9uFlIrEaVu9H6KeAKwv2pzP469fFNmbWSviKVunrTb2LkzNmthLYDtzo7v9JKbZaqZbzZcBcYL+ZnST0M/Y2+InRuO/t77v7eXf/A3CMUOAbWZy8NwGPArj7L4BLCZNY5VWsz3wc9V7QfwV0mtlMMxtDOOnZW9SmF9gQba8FnvDoTEODqppz1P3wTUIxz0O/asWc3f2su09293Z3byecN7jR3Q9lE24i4ry3HyOcAMfMJhO6YE6kGmXy4uT9IrACwMxmEQr66VSjTFcvcHs02mURcNbdXxrWI2V9BjjGGeJu4HeEM+Pbo9u+QPhAQ3ix9wLHgV8CHVnHnELOPwH+CjwX/fRmHXOtcy5qu58GH+US83U24D7gKPA8cEvWMaeU92zgAGEEzHPADVnHPMJ8vw28BJwnHI1vArYAWwpe553R/8fzI3lv69J/EZGcqPcuFxERiUkFXUQkJ1TQRURyQgVdRCQnVNBFRHJCBV1EJCdU0EXKiK48LrsvUm/0BpWmYGa3A58kzJFxGPgcsAuYQrgK8SPu/qKZ7SZMHTEf+LWZvQZMA9qBM8CtqQcvEpMKuuSemc0hzHuzxN3PmNkkwpTLD7n7HjPbCNwPrIl+pQtY6e4XzGwH8E5gqbu/nkH4IrGpy0WawXXAPnc/A+DurwCLgb4VgB4Glha03+vuFwr2e1XMpRGooEszMKpPR1p4/z+L7iveF6lLKujSDB4HbjazNoCoy+XnhJn+AG4Dns4oNpHEqA9dcs/dXzCzLwM/NbMLhHU6twK7zOxuopOiWcYokgTNtigikhPqchERyQkVdBGRnFBBFxHJCRV0EZGcUEEXEckJFXQRkZxQQRcRyYn/A75sZErfcKYxAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax = df.sort_values(\"corr\").plot(x=\"corr\", y=[\"d2\", \"d3\"])\n", + "ax.set_title(\"Evolution de l'erreur en fonction de la corr\u00e9lation\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On voit que la second m\u00e9thode est meilleure si la corr\u00e9lation est sup\u00e9rieur \u00e0 0.7. Plut\u00f4t moins bonne avant." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "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.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2020_1.ipynb b/_doc/practice/exams/td_note_2020_1.ipynb new file mode 100644 index 00000000..249c06da --- /dev/null +++ b/_doc/practice/exams/td_note_2020_1.ipynb @@ -0,0 +1,1077 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Enonc\u00e9 22 octobre 2019 (1)\n", + "\n", + "Correction du premier \u00e9nonc\u00e9 de l'examen du 22 octobre 2019. L'\u00e9nonc\u00e9 propose une fa\u00e7on de disposer des tables rondes dans une salle ronde." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On sait d'apr\u00e8s les derni\u00e8res questions qu'il faudra tout r\u00e9p\u00e9ter plusieurs fois. On prend le soin d'\u00e9crire chaque question dans une fonction. C'est un mariage dans une salle ronde. On veut disposer les tables de sortes qu'elles soient \u00e9loign\u00e9es le plus possible les unes des autres et du bord de la salle. Les tables sont toutes rondes et toutes la m\u00eame taille." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1 - distance_table\n", + "\n", + "Ecrire une fonction qui calcule la distance entre deux tables rondes dont on conna\u00eet le centre. Et comme ce sont des tables rondes, on consid\u00e8re que la distance entre deux tables est la distance entre leurs centres." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.23606797749979" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance_table(x1, y1, x2, y2):\n", + " return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5\n", + "\n", + "distance_table(0, 0, 2, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q2 - distance_bord\n", + "\n", + "Ecrire une fonction qui calcule la distance entre une table (son centre) et le bord de la salle de rayon *R*." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.585786437626905" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance_bord(x1, y1, R):\n", + " dist = distance_table(x1, y1, 0, 0)\n", + " return R - dist\n", + "\n", + "distance_bord(1, 1, 5)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-5.04987562112089" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "distance_bord(10, 1, 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q3 - table_alea\n", + "\n", + "Ecrire une fonction qui tire al\u00e9atoirement une table dans le cercle de rayon *R*." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.04023026006364461, -4.613278941761477)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import random\n", + "\n", + "def table_alea(R):\n", + " R2 = R ** 2\n", + " dist = R2 * 2\n", + " while dist > R2:\n", + " x = random.uniform(-R, R)\n", + " y = random.uniform(-R, R)\n", + " dist = x ** 2 + y ** 2\n", + " return x, y\n", + "\n", + "table_alea(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On peut utiliser une autre fa\u00e7on en utilisant les coordonn\u00e9es polaires." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.2697993898932539, 0.07781479211233774)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import math\n", + "\n", + "def table_alea_pol(C):\n", + " t = random.uniform(0, math.pi)\n", + " y = random.uniform(0, C)\n", + " x = math.cos(t) * t\n", + " y = math.sin(t) * t\n", + " return x, y\n", + "\n", + "table_alea_pol(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q4 - n_table_alea\n", + "\n", + "Ecrire une fonction qui tire al\u00e9atoirement *N* tables dans le cercle de rayon *R*." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(-2.104239515207136, -1.7109081402403072),\n", + " (-0.46932352351540807, -0.3259610442266929),\n", + " (-1.1743368223886739, 3.2821629999494295)]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def n_table_alea(N, R):\n", + " return [table_alea(R) for n in range(N)]\n", + "\n", + "n_table_alea(3, 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q5 - table_proches\n", + "\n", + "Ecrire une fonction qui retourne la table la plus proche d'une table ou du bord. La fonction doit retourner l'indice de la table la plus proche ou -1 si c'est le bord, puis la distance associ\u00e9e. On ajoute un param\u00e8tre *skip_i* pour \u00e9viter une table dans la liste ``list_tables``." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 1.7403604958859722)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def table_proches(x1, y1, list_tables, R, skip_i):\n", + " proche = -1\n", + " best = distance_bord(x1, y1, R)\n", + " for i, table in enumerate(list_tables):\n", + " if i == skip_i:\n", + " continue\n", + " dist = distance_table(x1, y1, table[0], table[1])\n", + " if dist < best:\n", + " best = dist\n", + " proche = i\n", + " return proche, best\n", + "\n", + "R = 5\n", + "list_tables = n_table_alea(3, R)\n", + "table_proches(1, 1, list_tables, R, None)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-1, 0.5)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table_proches(R * 0.9, 0, list_tables, R, None)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q6 - distance_n_tables_alea\n", + "\n", + "Ecrire une fonction qui tire *N* tables al\u00e9atoirement et qui retourne la distance minimum entre deux tables ou le mur et les tables." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1.151393678876878,\n", + " [(-0.0883943109284333, -3.2251498896276685),\n", + " (1.9591970274173125, -0.8759281350069976),\n", + " (0.8362221630472657, 3.7566611650530053)])" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance_n_tables_alea(N, R):\n", + " distrib = n_table_alea(N, R)\n", + " best = R ** 2\n", + " for i, table in enumerate(distrib):\n", + " proche, dist = table_proches(table[0], table[1], distrib, R, skip_i=i)\n", + " if dist < best:\n", + " best = dist\n", + " return best, distrib\n", + "\n", + "distance_n_tables_alea(3, R)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q7 - meilleur_table_alea\n", + "\n", + "Ecrire une fonction qui tire *N* tables al\u00e9atoirement et qui retourne la distance minimum entre deux tables ou le mur et les tables." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([(-1.0002849316792242, -3.5208215962264875),\n", + " (1.537577072452744, -0.650373925673775),\n", + " (2.339568894819979, 0.31652883529303466)],\n", + " 1.256221251336387)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def meilleur_table_alea(k, N, R):\n", + " dist = 0\n", + " best = None\n", + " for i in range(k):\n", + " d, distrib = distance_n_tables_alea(N, R)\n", + " if d > dist:\n", + " best = distrib\n", + " dist = d\n", + " return best, dist\n", + "\n", + "meilleur_table_alea(10, 3, R)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q8 - r\u00e9sultat num\u00e9rique\n", + "\n", + "Ecrire une fonction qui retourne le r\u00e9sultat pour 11 tables et une salle de diam\u00e8tre 1." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([(0.5565818929001787, 0.05896867240161785),\n", + " (-0.5288969098327476, 0.28733719348942466),\n", + " (-0.6110699282390006, 0.32241732345580165),\n", + " (-0.14909553247181195, -0.9356539992681199),\n", + " (0.026230694145464417, -0.2908024901550055),\n", + " (0.4975323234658624, -0.06918255935350293),\n", + " (0.60937258121247, 0.16579629631884596),\n", + " (0.22654870937824634, 0.12601838486539685),\n", + " (-0.651232619461013, 0.05440550117493803),\n", + " (-0.25693188063963546, 0.044795815889184576),\n", + " (-0.07316443943516515, 0.8533292769508105)],\n", + " 0.0525413549133239)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "best, dist = meilleur_table_alea(10, 11, 1)\n", + "best, dist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q9 - plot_tables\n", + "\n", + "Ecrire une fonction qui repr\u00e9sente la solution avec matplotlib en partant de l'exemple donn\u00e9e." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from matplotlib.patches import Circle\n", + "\n", + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "R = 1\n", + "ax.set_xlim([-R, R])\n", + "ax.set_ylim([-R, R])\n", + "c = Circle((0, 0), 1, alpha=0.2)\n", + "ax.add_artist(c)\n", + "ax.plot([b[0] for b in best], [b[1] for b in best], 'o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 ...\n", + "\n", + "Il est difficile de tomber sur une bonne r\u00e9partition de tables en partant du hasard et plus il y aura de tables, plus il faudra de tirages. On peut aussi chercher \u00e0 positionner les tables selon un quadrillage hexagonal en formant une spirale et de chercher le meilleur \u00e9cartement. On peut aussi partir d'un tirage puis d'\u00e9loigner les deux tables les plus proches. L'\u00e9loigner de combien, c'est une autre question. C'est la premi\u00e8re option et elle ne marche pas tr\u00e8s bien." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 paire (4, 5) distance 0.16110855450954664\n", + "50 paire (4, 6) distance 0.13158100390586172\n", + "100 paire (4, 5) distance 0.2384176552949989\n", + "150 paire (4, 5) distance 0.218691822411302\n", + "200 paire (4, 5) distance 0.19838094003303594\n", + "250 paire (4, 5) distance 0.2162723387696761\n", + "300 paire (4, 10) distance 0.20826241454101815\n", + "350 paire (4, 5) distance 0.2094900548253301\n" + ] + } + ], + "source": [ + "import numpy\n", + "\n", + "def improve_distrib(iter, tables, R, alpha=0.2):\n", + " \n", + " for it in range(iter):\n", + " \n", + " # On cherche la pair la plus proche.\n", + " best = R ** 2\n", + " pair = None\n", + " for i, table in enumerate(tables):\n", + " proche, dist = table_proches(table[0], table[1], tables, R, skip_i=i)\n", + " if dist < best:\n", + " best = dist\n", + " pair = i, proche\n", + " \n", + " if it % 50 == 0:\n", + " print(it, \"paire\", pair, \"distance\", best)\n", + "\n", + " # On choisit une table.\n", + " if pair[0] == -1:\n", + " i = 1\n", + " elif pair[1] == -1:\n", + " i = 0\n", + " else:\n", + " i = numpy.random.randint(0, 1)\n", + " \n", + " pi = pair[i]\n", + " if pair[1-i] == -1:\n", + " pjp = (0, 0)\n", + " sign = 1\n", + " else:\n", + " pjp = tables[pair[1-i]]\n", + " sign = -1\n", + " \n", + " # On calcule le vecteur entre les deux tables.\n", + " dx, dy = (pjp[0] - tables[pi][0],\n", + " pjp[1] - tables[pi][1])\n", + " \n", + " # Un peu d'al\u00e9a.\n", + " h = numpy.random.uniform(0, alpha)\n", + " dx *= h * sign\n", + " dy *= h * sign\n", + " \n", + " # On bouge la table.\n", + " table = tables[pi]\n", + " tables[pi] = (table[0] + dx, table[1] + dy)\n", + " if distance_bord(tables[pi][0], tables[pi][1], R) < 0:\n", + " # Table hors du cercle\n", + " tables[pi] = (table[0] - dx, table[1] - dy)\n", + "\n", + "\n", + "R = 1\n", + "best_sol, dist = meilleur_table_alea(10, 11, R)\n", + "improve_distrib(351, best_sol, R, alpha=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "ax.set_xlim([-R, R])\n", + "ax.set_ylim([-R, R])\n", + "c = Circle((0, 0), 1, alpha=0.2)\n", + "ax.add_artist(c)\n", + "ax.plot([b[0] for b in best_sol], [b[1] for b in best_sol], 'o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 - Vorono\u00ef\n", + "\n", + "On peut aussi \u00e9carter une table de ses voisins les plus proches, voisins trouv\u00e9s gr\u00e2ce \u00e0 un diagramme de Vorono\u00ef ou \u00e0 une triangulation de [Delaunay](https://fr.wikipedia.org/wiki/Triangulation_de_Delaunay)." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.spatial import Voronoi, voronoi_plot_2d, Delaunay\n", + "points = numpy.array(best_sol)\n", + "vor = Voronoi(points)\n", + "dela = Delaunay(points)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "c = Circle((0, 0), 1, alpha=0.2)\n", + "ax.add_artist(c)\n", + "ax.plot([b[0] for b in best_sol], [b[1] for b in best_sol], 'o')\n", + "voronoi_plot_2d(vor, ax=ax)\n", + "ax.triplot(points[:,0], points[:,1], dela.simplices.copy(), \"--\", label=\"Delaunay\")\n", + "ax.set_xlim([-R, R])\n", + "ax.set_ylim([-R, R])\n", + "ax.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On ajoute le bord." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "N = 12\n", + "bords = []\n", + "for i in range(0, N + 1):\n", + " bords.append((R * math.cos(i / N * math.pi * 2),\n", + " R * math.sin(i / N * math.pi * 2)))\n", + "points2 = numpy.vstack([points, bords])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "c = Circle((0, 0), 1, alpha=0.2)\n", + "ax.add_artist(c)\n", + "ax.plot([b[0] for b in best_sol], [b[1] for b in best_sol], 'o')\n", + "vor2 = Voronoi(points2)\n", + "dela2 = Delaunay(points2)\n", + "voronoi_plot_2d(vor2, ax=ax)\n", + "ax.triplot(points2[:,0], points2[:,1], dela2.simplices.copy(), \"--\")\n", + "ax.set_xlim([-R, R])\n", + "ax.set_ylim([-R, R]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le diagramme de Vorono\u00ef permet de construire un voisinage de points pour qu'on peut rapprocher le plus possible d'en ensemble de triangles \u00e9quilat\u00e9raux ou rapprocher une table le plus possible de sa fronti\u00e8re la plus \u00e9loign\u00e9e. Apr\u00e8s quelques essais, je ne peux pas que ce fut l\u00e0 la meilleure inspiration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 - KMeans\n", + "\n", + "Une autre id\u00e9e consiste \u00e0 recouvrir la salle de points puis \u00e0 effectuer un [KMeans](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html) pour cr\u00e9er artificiellement des zones." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def points_in_circle(N, R):\n", + " points = numpy.empty(((N+1)**2, 2)) \n", + " pos = 0\n", + " for i in range(0, N + 1):\n", + " for j in range(0, N + 1):\n", + " points[pos, 0] = 1.0 * i / N * R * 2 - R\n", + " points[pos, 1] = 1.0 * j / N * R * 2 - R\n", + " pos += 1\n", + " dist = points[:, 0] ** 2 + points[:, 1] ** 2\n", + " points = points[dist <= R**2, :]\n", + " return points\n", + "\n", + "R = 1\n", + "points = points_in_circle(25, R)\n", + "\n", + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "c = Circle((0, 0), R, alpha=0.2)\n", + "ax.add_artist(c)\n", + "ax.plot(points[:, 0], points[:, 1], '.');" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n", + " n_clusters=11, n_init=10, n_jobs=None, precompute_distances='auto',\n", + " random_state=None, tol=0.0001, verbose=0)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.cluster import KMeans\n", + "km = KMeans(n_clusters=11)\n", + "km.fit(points)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "pred = km.predict(points)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les centres des clusters sont les emplacements des tables cherch\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 2, figsize=(10, 4))\n", + "c = Circle((0, 0), 1, alpha=0.2)\n", + "ax[0].add_artist(c)\n", + "ax[0].set_xlim([-R, R])\n", + "ax[0].set_ylim([-R, R])\n", + "ax[0].scatter(points[:, 0], points[:, 1], c=pred)\n", + "\n", + "c = Circle((0, 0), 1, alpha=0.2)\n", + "ax[1].add_artist(c)\n", + "ax[1].set_xlim([-R, R])\n", + "ax[1].set_ylim([-R, R])\n", + "ax[1].plot(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1], 'o')\n", + "vor2 = Voronoi(km.cluster_centers_)\n", + "voronoi_plot_2d(vor2, ax=ax[1])\n", + "ax[1].set_title(\"Centres des clusters - KMeans\")\n", + "ax[1].set_xlim([-R, R])\n", + "ax[1].set_ylim([-R, R]);" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.22015129672480682, 0.13834146640009876)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance_n_tables(distrib, R):\n", + " best = R ** 2\n", + " for i, table in enumerate(distrib):\n", + " proche, dist = table_proches(table[0], table[1], distrib, R, skip_i=i)\n", + " if dist < best:\n", + " best = dist\n", + " return best\n", + "\n", + "distance_n_tables(km.cluster_centers_, 1), distance_n_tables(best_sol, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On essaye avec un m\u00e9lange de lois normales." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.mixture import GaussianMixture\n", + "gau = GaussianMixture(11)\n", + "gau.fit(points)\n", + "pred = gau.predict(points)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 2, figsize=(10, 4))\n", + "c = Circle((0, 0), 1, alpha=0.2)\n", + "ax[0].add_artist(c)\n", + "ax[0].set_xlim([-R, R])\n", + "ax[0].set_ylim([-R, R])\n", + "ax[0].scatter(points[:, 0], points[:, 1], c=pred)\n", + "\n", + "c = Circle((0, 0), 1, alpha=0.2)\n", + "ax[1].add_artist(c)\n", + "ax[1].set_xlim([-R, R])\n", + "ax[1].set_ylim([-R, R])\n", + "ax[1].plot(gau.means_[:, 0], gau.means_[:, 1], 'o')\n", + "vor2 = Voronoi(gau.means_)\n", + "voronoi_plot_2d(vor2, ax=ax[1])\n", + "ax[1].set_title(\"Centres des clusters - gaussian mixture\")\n", + "ax[1].set_xlim([-R, R])\n", + "ax[1].set_ylim([-R, R]);" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.22015129672480682, 0.21874003784217044)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "distance_n_tables(km.cluster_centers_, 1), distance_n_tables(gau.means_, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "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.7.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2020_2.ipynb b/_doc/practice/exams/td_note_2020_2.ipynb new file mode 100644 index 00000000..745a3cc9 --- /dev/null +++ b/_doc/practice/exams/td_note_2020_2.ipynb @@ -0,0 +1,1039 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A.e - Enonc\u00e9 22 octobre 2019 (2)\n", + "\n", + "Correction du second \u00e9nonc\u00e9 de l'examen du 22 octobre 2019. L'\u00e9nonc\u00e9 propose une fa\u00e7on de disposer des tables carr\u00e9es dans une salle carr\u00e9e." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On sait d'apr\u00e8s les derni\u00e8res questions qu'il faudra tout r\u00e9p\u00e9ter plusieurs fois. On prend le soin d'\u00e9crire chaque question dans une fonction. C'est un mariage dans une salle carr\u00e9e. On veut disposer les tables de sortes qu'elles soient \u00e9loign\u00e9es le plus possible les unes des autres et du bord de la salle. Les tables sont toutes carr\u00e9es et toutes la m\u00eame taille." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q1 - distance_table\n", + "\n", + "Ecrire une fonction qui calcule la distance entre deux tables carr\u00e9es dont on conna\u00eet le centre. Et comme ce sont des tables carr\u00e9es, on consid\u00e8re que la distance entre deux tables est la plus grande des valeurs absolues des diff\u00e9rences de coordonn\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance_table(x1, y1, x2, y2):\n", + " return max(abs(x1 - x2), abs(y1 - y2))\n", + "\n", + "distance_table(0, 0, 2, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q2 - distance_bord\n", + "\n", + "Ecrire une fonction qui calcule la distance entre une table (son centre) et le bord de la salle de c\u00f4t\u00e9 *2C*." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance_bord(x1, y1, C):\n", + " dist = distance_table(x1, y1, 0, 0)\n", + " return C - dist\n", + "\n", + "distance_bord(1, 1, 5)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-5" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "distance_bord(10, 1, 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q3 - table_alea\n", + "\n", + "Ecrire une fonction qui tire al\u00e9atoirement une table dans le carr\u00e9 de c\u00f4t\u00e9 *2C*" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-4.908190224838399, 2.7798369055014547)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import random\n", + "\n", + "def table_alea(C):\n", + " C2 = C ** 2\n", + " dist = C2 * 2\n", + " x = random.uniform(-C, C)\n", + " y = random.uniform(-C, C)\n", + " return x, y\n", + "\n", + "table_alea(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q4 - n_table_alea\n", + "\n", + "Ecrire une fonction qui tire al\u00e9atoirement *N* tables dans le carr\u00e9 de c\u00f4t\u00e9 *2C*." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(-0.6047310701361788, -4.538160002945912),\n", + " (2.7983390011407794, 2.6871544213644984),\n", + " (1.4887075948495667, -4.511831256978005)]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def n_table_alea(N, C):\n", + " return [table_alea(C) for n in range(N)]\n", + "\n", + "n_table_alea(3, 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q5 - table_proches\n", + "\n", + "Ecrire une fonction qui retourne la table la plus proche d'une table ou du bord. La fonction doit retourner l'indice de la table la plus proche ou -1 si c'est le bord, puis la distance associ\u00e9e. On ajoute un param\u00e8tre *skip_i* pour \u00e9viter une table." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 3.1962115931817596)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def table_proches(x1, y1, list_tables, C, skip_i):\n", + " proche = -1\n", + " best = distance_bord(x1, y1, C)\n", + " for i, table in enumerate(list_tables):\n", + " if i == skip_i:\n", + " continue\n", + " dist = distance_table(x1, y1, table[0], table[1])\n", + " if dist < best:\n", + " best = dist\n", + " proche = i\n", + " return proche, best\n", + "\n", + "C = 5\n", + "list_tables = n_table_alea(3, C)\n", + "table_proches(1, 1, list_tables, C, None)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-1, 0.5)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table_proches(C * 0.9, 0, list_tables, C, None)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q6 - distance_n_tables_alea\n", + "\n", + "Ecrire une fonction qui tire *N* tables al\u00e9atoirement et qui retourne la distance minimum entre deux tables ou le mur et les tables." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.6710676955082597,\n", + " [(-0.8642968594855169, 4.32893230449174),\n", + " (1.500463237472049, -0.1547646758902923),\n", + " (3.7606012466424747, 4.019429938832147)])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance_n_tables_alea(N, C):\n", + " distrib = n_table_alea(N, C)\n", + " best = C ** 2\n", + " for i, table in enumerate(distrib):\n", + " proche, dist = table_proches(table[0], table[1], distrib, C, skip_i=i)\n", + " if dist < best:\n", + " best = dist\n", + " return best, distrib\n", + "\n", + "distance_n_tables_alea(3, C)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q7 - meilleur_table_alea\n", + "\n", + "Ecrire une fonction qui tire *N* tables al\u00e9atoirement et qui retourne la distance minimum entre deux tables ou le mur et les tables." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([(-3.6514056477386534, 1.596586600954664),\n", + " (0.05123812953078399, 0.05320587377518926),\n", + " (0.37467460315675805, -2.4937702081221422)],\n", + " 1.3485943522613466)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def meilleur_table_alea(k, N, C):\n", + " dist = 0\n", + " best = None\n", + " for i in range(k):\n", + " d, distrib = distance_n_tables_alea(N, C)\n", + " if d > dist:\n", + " best = distrib\n", + " dist = d\n", + " return best, dist\n", + "\n", + "meilleur_table_alea(10, 3, C)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q8 - r\u00e9sultat num\u00e9rique\n", + "\n", + "Ecrire une fonction qui retourne le r\u00e9sultat pour 11 tables et une salle de demi-c\u00f4t\u00e9 1." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([(-0.6259118658008394, -0.1764558984440392),\n", + " (0.6004143527243244, -0.4008125902558497),\n", + " (-0.052940751769248395, 0.547095264138868),\n", + " (0.7525281574947777, 0.6243952889602158),\n", + " (-0.2784959002399452, -0.16893417347025785),\n", + " (0.15965080092875694, 0.5866949933059173),\n", + " (-0.6062900542195173, -0.43564615941411566),\n", + " (0.26135901810381923, -0.2792244176019283),\n", + " (0.7961649730497629, -0.28673576049151195),\n", + " (0.08784118387851514, 0.2840288333247212),\n", + " (0.7893555701617381, -0.6299236074366998)],\n", + " 0.19575062032543844)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "best, dist = meilleur_table_alea(10, 11, 1)\n", + "best, dist" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q9 - plot_tables\n", + "\n", + "Ecrire une fonction qui repr\u00e9sente la solution avec matplotlib en partant de l'exemple donn\u00e9e." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAARsAAAD8CAYAAABHGwCvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAS3ElEQVR4nO3db4xcV33G8e9Tp3HWrUrWXsAmYDtRI5OtXSV4FWgjuW2AEHjhQEmpI7c4VZBlFVqpCJQgKqgCqAl9kQqVNhgIf4yVhLiiNSJRauKkfgGGrNuQdRwZOwaDY0PiP6Sq1nWI8+uLe9aM1zPr2Z07Z+6dfT7SaGbOvXfmXI3n8b3nztmfIgIzs277tV53wMxmB4eNmWXhsDGzLBw2ZpaFw8bMsnDYmFkWpYSNpHskPSdpd4vlkvQZSfslPSnpDQ3L1knal27ryuiPmVVPWUc2Xwaun2L524HL02098C8AkuYDHwfeCFwNfFzSYEl9MrMKKSVsImIHcHyKVW4AvhqFncDFkhYBbwO2RcTxiDgBbGPq0DKzmrog0/tcAvy04fmh1Naq/RyS1lMcFTEw8Bsrly59fXd6amYtPf30rqMR8cqZbJsrbNSkLaZoP7cxYiOwEWB4eCQ2bRotr3dm1paRER2c6ba5rkYdAl7X8Py1wOEp2s2sz+QKm63Ae9NVqTcBL0TEEeBh4DpJg2lg+LrUZmZ9ppTTKEn3An8IDEk6RHGF6dcBIuJu4EHgHcB+YBz4i7TsuKRPAI+nl7o9IqYaaDazmiolbCLipvMsD+D9LZbdA9xTRj/MrLr8C2Izy8JhY2ZZOGzMLAuHjZll4bAxsywcNmaWhcPGzLJw2JhZFg4bM8vCYWNmWThszCwLh42ZZeGwMbMsHDZmloXDxsyycNiYWRYOGzPLwmFjZlmUVX73ekl7U3nd25osv0vSE+n2Q0m/aFh2umHZ1jL6Y2bV0/HfIJY0B/gs8FaK0iyPS9oaEXsm1omIv2lY/6+Aqxpe4mREXNlpP8ys2so4srka2B8RByLiReA+inK7rdwE3FvC+5pZjZQRNtMpobsEuBTY3tB8kaRRSTslvbOE/phZBZVRyqXtErrAGmBLRJxuaFscEYclXQZslzQWEc+c8yYNtb4XLlzcaZ/NLLMyjmymU0J3DZNOoSLicLo/ADzG2eM5jettjIiRiBgZHJxRXXMz66EywuZx4HJJl0q6kCJQzrmqJGkZMAh8t6FtUNLc9HgIuAbYM3lbM6u/jk+jIuIlSR+gqNE9B7gnIp6SdDswGhETwXMTcF+qjjnhCuBzkl6mCL47Gq9imVn/KKv87oMU9bwb2z426fnfNdnuO8CKMvpgZtXmXxCbWRYOGzPLwmFjZlk4bMwsC4eNmWVRytUoM8trx8Fn2bx7L8fGT7Jg3gBrly9j1ZKms4Qqw2FjVjM7Dj7L3bvGOHW6mPVzdPwkd+8aA6h04Pg0yqxmNu/eeyZoJpw6fZrNu/f2qEftcdiY1cyx8ZPTaq8Kn0ZZrdRxrKJsC+YNcLRJsCyYN9CD3rTPRzZWGxNjFUfHTxL8aqxix8Fne921rNYuX8bcOXPOaps7Zw5rly/rUY/a47Cx2qjrWEXZVi25hA0rVzA0bwABQ/MG2LByReWP8HwaZbVR17GKbli15JLKh8tkPrKx2mg1JlH1sQor+MjGStetQdy1y5ed9fsSqMdYhRUcNlaqbv7gbGL72X41qq4cNlaqqQZxywiFOo5VWMFjNlYqD+JaKw4bK5UHca2VXLW+b5b0fENN7/c1LFsnaV+6rSujP9Y7df3BmXVfllrfyf0R8YFJ284HPg6MUBS225W2PdFpv6w3PIhrrZQxQHym1jeApIla3+2UZHkbsC0ijqdttwHX41rgteZBXGsmZ63vd0t6UtIWSRMVNKdTJ3x9qgk+euLE8yV028xyKiNs2qn1/U1gaUT8LvBt4CvT2LZodPlds1rLUus7Io5FxKn09PPAyna3NbP+kKXWt6RFDU9XA0+nxw8D16Wa34PAdanNzPpMrlrffy1pNfAScBy4OW17XNInKAIL4PaJwWIz6y+KaDpEUmnDwyOxadNor7thNuuMjGhXRIzMZFv/gtjMsnDYmFkWDhszy8JhY2ZZOGzMLAuHjZll4bAxsywcNmaWhcPGzLJw2JhZFg4bM8vCYWNmWThszCwLh42ZZeGKmFYp3aoTbr3nsLHK6GadcOs9n0ZZZUxVJ9zqz2FjleE64f0tV/ndD0rak+pGPSJpScOy0w1lebdO3tZmD9cJ728dh01D+d23A8PATZKGJ63238BIqhu1Bfh0w7KTEXFluq3utD9WX64T3t/KOLI5U343Il4EJsrvnhERj0bEeHq6k6I+lNlZVi25hA0rVzA0bwABQ/MG2LByhQeH+0QZV6OaldB94xTr3wI81PD8IkmjFGVe7oiIf2u2kaT1wHqAhQsXd9Rhqy7XCe9fZYRN2yV0Jf0ZMAL8QUPz4og4LOkyYLuksYh45pwXjNgIbISilEvn3TaznLKU3wWQ9Bbgo8DqhlK8RMThdH8AeAy4qoQ+mVnF5Cq/exXwOYqgea6hfVDS3PR4CLgG2FNCn8ysYnKV3/0H4DeBByQB/CRdeboC+JyklymC746IcNiY9aFSpitExIPAg5PaPtbw+C0ttvsOsKKMPphZtfkXxGaWhcPGzLJw2JhZFg4bM8vCYWNmWThszCwLh42ZZeGwMbMsHDZmloXDxsyycNiYWRYOGzPLwmFjZlk4bMwsC4eNmWXhsDGzLBw2ZpaFw8bMsshVfneupPvT8u9JWtqw7COpfa+kt5XRHzOrnlzld28BTkTEbwN3AXembYcpqjH8DnA98M/p9cysz2Qpv5uefyU93gK8WUWZhRuA+yLiVET8CNifXs/M+kwZYdOs/O7k+qln1omIl4AXgAVtbgsU5XcljUoaPXHi+RK6bWY5lRE27ZTfbbVO26V7I2JjRIxExMjg4Cun2UUz67Vc5XfPrCPpAuAVwPE2tzWzPpCl/G56vi49vhHYHhGR2tekq1WXApcD3y+hT2ZWMbnK734R2CRpP8URzZq07VOSvk5R3/sl4P0RcbrTPplZ9ag4wKiX4eGR2LRptNfdMJt1Rka0KyJGZrKtf0FsZlk4bMwsC4eNmWXhsDGzLBw2ZpaFw8bMsnDYmFkWDhszy8JhY2ZZdDxdwepjx8Fn2bx7L8fGT7Jg3gBrly9j1ZKmf9HDrHQOmy6o4pd6x8FnuXvXGKdOF1PPjo6f5O5dYwA975vNDj6NKtnEl/ro+EmCX32pdxx8tqf92rx775mgmXDq9Gk2797box7ZbOOwKVlVv9THxk9Oq92sbA6bklX1S71g3sC02s3K5rApWVW/1GuXL2PunLMLV8ydM4e1y5f1qEc22zhsSlbVL/WqJZewYeUKhuYNIGBo3gAbVq7w4LBl46tRJZv48lbtahQUfatCP2x2cth0gb/UZufq6DRK0nxJ2yTtS/eDTda5UtJ3JT0l6UlJf9qw7MuSfiTpiXS7spP+mFl1dTpmcxvwSERcDjySnk82Drw3IiZK7P6jpIsbln84Iq5Mtyc67I+ZVVSnYdNYVvcrwDsnrxARP4yIfenxYeA5wFXmzGaZTsdsXh0RRwAi4oikV021sqSrgQuBZxqaPyXpY6Qjo4g41WLb9cB6gIULF3fYbZstqjh1ZLY6b9hI+jawsMmij07njSQtAjYB6yLi5dT8EeBnFAG0EbgVuL3Z9hGxMa3D8PBI/erPWHazbT5Y1YP1vGETEW9ptUzSzyUtSkc1iyhOkZqt91vAt4C/jYidDa99JD08JelLwIem1XuzKUw1daRKX8Iy1CFYOx2zaSyruw7498krpJK83wC+GhEPTFq2KN2LYrxnd4f9MTujqlNHuqGqc/IadRo2dwBvlbQPeGt6jqQRSV9I67wHWAXc3OQS92ZJY8AYMAR8ssP+mJ1R1akj3VCHYO1ogDgijgFvbtI+CrwvPf4a8LUW21/byfubTWXt8mVnnVpANaaOdMOCeQMcbRIsVQpWz42yvjWb5oNVdU5eI09XsL42W6aOVHlO3gSHjVmfqHqw+jTKzLJw2JhZFg4bM8vCYWNmWThszCwLX40yy6zqEya7xWFjllEdJkx2i0+jzDKqw4TJbvGRTRfN1sNla60OEya7xUc2XVLVmt/WW7NpJvpkDpsumc2Hy9ZaHSZMdotPo7pkNh8uW2t1mDDZLQ6bLqnD3xex3qj6hMlu8WlUl8zmw2WzZnxk0yWz+XDZrJmOwkbSfOB+YCnwY+A9EXGiyXqnKf7OMMBPImJ1ar8UuA+YD/wX8OcR8WInfaqS2Xq4bNZMjvK7ACcbSuyubmi/E7grbX8CuKXD/phZRXW9/G4rqXzLtcCWmWxvZvXSadicVX4XaFV+9yJJo5J2SpoIlAXALyLipfT8ENDynEPS+vQaoydOPN9ht80st1zldxdHxGFJlwHbU62o/2myXsuyui6/a1ZvWcrvRsThdH9A0mPAVcC/AhdLuiAd3bwWODyDfTCzGshRfndQ0tz0eAi4BtgTEQE8Ctw41fZm1h9ylN+9AhiV9AOKcLkjIvakZbcCH5S0n2IM54sd9sfMKipH+d3vACtabH8AuLqTPphZPXi6gpll4bAxsywcNmaWhcPGzLJw2JhZFg4bM8vCf8/GrE9UvZqHw8asD9Sh+J1Po8z6QB2qeThszPpAHap5OGzM+kAdit85bMz6QB2qeXiA2KwP1KGah8PGrE9UvZqHT6PMLAuHjZll4bAxsywcNmaWRUdhI2m+pG2S9qX7wSbr/JGkJxpu/zdRO0rSlyX9qGHZlZ30x8yqq+vldyPi0YnSuxQVMMeB/2hY5cMNpXmf6LA/ZlZRucvv3gg8FBHjHb6vmdVMrvK7E9YA905q+5SkJyXdNVFfysz6T67yu6SKmSuAhxuaPwL8DLiQorTurcDtLbZfD6wHWLhw8XTe2swqIEv53eQ9wDci4pcNr30kPTwl6UvAh6boh2t9m9VY18vvNriJSadQKaCQJIrxnt0d9sfMKipH+V0kLQVeB/znpO03SxoDxoAh4JMd9sfMKqrr5XfT8x8D58wQi4hrO3l/M6sP/4LYzLJw2JhZFg4bM8vCYWNmWThszCwLh42ZZeGwMbMsHDZmloXDxsyycNiYWRYOGzPLwmFjZlk4bMwsC4eNmWXhsDGzLBw2ZpaFw8bMsnDYmFkWDhszy6LTWt9/IukpSS9LGplivesl7ZW0X9JtDe2XSvpeqhV+v6QLO+mPmVVXp0c2u4E/Bna0WkHSHOCzwNuBYeAmScNp8Z3AXalW+Anglg77Y2YV1VHYRMTTEbH3PKtdDeyPiAMR8SJwH3BDqhV1LbAlrddOrXAzq6mOSrm06RLgpw3PDwFvBBYAv4iIlxrazyn3MqGx/C5wamRE/VzQbgg42utOdEk/7xv0//4tm+mGHdX6joipKmCeeYkmbTFFe1ON5XcljUZEyzGiuuvn/evnfYPZsX8z3bajWt9tOkRRDXPCa4HDFOl/saQL0tHNRLuZ9aEcl74fBy5PV54uBNYAWyMigEeBG9N656sVbmY11uml73dJOgT8HvAtSQ+n9tdIehAgHbV8AHgYeBr4ekQ8lV7iVuCDkvZTjOF8sc233thJv2ugn/evn/cNvH8tqTjAMDPrLv+C2MyycNiYWRa1CJtOp0VUnaT5kralaRvbJA22WO+0pCfSbWvufk7H+T4LSXPTFJX9acrK0vy9nLk29u9mSc83fF7v60U/Z0LSPZKek5r/lk2Fz6R9f1LSG9p64Yio/A24guLHRI8BIy3WmQM8A1wGXAj8ABjudd/b3L9PA7elx7cBd7ZY73973dc29+e8nwXwl8Dd6fEa4P5e97vk/bsZ+Kde93WG+7cKeAOwu8XydwAPUfxW7k3A99p53Voc2UQH0yK637tS3EAxXQP6Y9pGO59F4z5vAd6cprDUQZ3/rZ1XROwAjk+xyg3AV6Owk+L3covO97q1CJs2NZsW0XL6Q8W8OiKOAKT7V7VY7yJJo5J2SqpyILXzWZxZJ4qfR7xA8fOHOmj339q702nGFkmva7K8rmb0XcsxN6otXZwWUQlT7d80XmZxRByWdBmwXdJYRDxTTg9L1c5nUenP6zza6fs3gXsj4pSkDRRHcdd2vWd5zOizq0zYRPemRVTCVPsn6eeSFkXEkXQ4+lyL1zic7g9Iegy4imLsoGra+Swm1jkk6QLgFUx96F4l592/iDjW8PTzFH9OpV/M6LvWT6dRTadF9LhP7dpKMV0DWkzbkDQoaW56PARcA+zJ1sPpaeezaNznG4HtkUYfa+C8+zdpDGM1xa/n+8VW4L3pqtSbgBcmhgGm1OuR7zZHx99FkaangJ8DD6f21wAPThol/yHF//Yf7XW/p7F/C4BHgH3pfn5qHwG+kB7/PjBGceVjDLil1/0+zz6d81kAtwOr0+OLgAeA/cD3gct63eeS9+/vgafS5/Uo8Ppe93ka+3YvcAT4Zfre3QJsADak5aL4g3jPpH+LTa8QT755uoKZZdFPp1FmVmEOGzPLwmFjZlk4bMwsC4eNmWXhsDGzLBw2ZpbF/wO5DO8CJuTmZQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "from matplotlib.patches import Rectangle\n", + "\n", + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "C = 1\n", + "ax.set_xlim([-C, C])\n", + "ax.set_ylim([-C, C])\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax.add_artist(c)\n", + "ax.plot([b[0] for b in best], [b[1] for b in best], 'o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 ...\n", + "\n", + "Il est difficile de tomber sur une bonne r\u00e9partition de tables en partant du hasard et plus il y aura de tables, plus il faudra de tirages. Il est plus simple de partir d'un tirage puis d'\u00e9loigner les deux tables les plus proches. L'\u00e9loigner de combien, c'est une autre question. C'est la premi\u00e8re option. La seconde est de positionner les tables selon un quadrillage rectangulaire en formant une spirale et de chercher le meilleur \u00e9cartement.\n", + "\n", + "Pour la premi\u00e8re option, on peut soit \u00e9carter une paire de table, soit \u00e9carter une table de ses voisins les plus proches, voisins trouv\u00e9s gr\u00e2ce \u00e0 un diagramme de Vorono\u00ef. La premi\u00e8re variante ne marche pas tr\u00e8s bien." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 paire (9, -1) distance 0.07797442236028274\n", + "50 paire (0, 9) distance 0.17084871553555847\n", + "100 paire (0, 1) distance 0.16055223380264586\n", + "150 paire (0, 1) distance 0.22481137276979984\n" + ] + } + ], + "source": [ + "import numpy\n", + "\n", + "def improve_distrib(iter, tables, C, alpha=0.2):\n", + " \n", + " for it in range(iter):\n", + " \n", + " # On cherche la pair la plus proche.\n", + " best = C ** 2\n", + " pair = None\n", + " for i, table in enumerate(tables):\n", + " proche, dist = table_proches(table[0], table[1], tables, C, skip_i=i)\n", + " if dist < best:\n", + " best = dist\n", + " pair = i, proche\n", + " \n", + " if it % 50 == 0:\n", + " print(it, \"paire\", pair, \"distance\", best)\n", + "\n", + " # On choisit une table.\n", + " if pair[0] == -1:\n", + " i = 1\n", + " elif pair[1] == -1:\n", + " i = 0\n", + " else:\n", + " i = numpy.random.randint(0, 1)\n", + " \n", + " pi = pair[i]\n", + " if pair[1-i] == -1:\n", + " pjp = (0, 0)\n", + " sign = 1\n", + " else:\n", + " pjp = tables[pair[1-i]]\n", + " sign = -1\n", + " \n", + " # On calcule le vecteur entre les deux tables.\n", + " dx, dy = (pjp[0] - tables[pi][0],\n", + " pjp[1] - tables[pi][1])\n", + " \n", + " # Un peu d'al\u00e9a.\n", + " h = numpy.random.uniform(0, alpha)\n", + " dx *= h * sign\n", + " dy *= h * sign\n", + " \n", + " # On bouge la table.\n", + " table = tables[pi]\n", + " tables[pi] = (table[0] + dx, table[1] + dy)\n", + " if distance_bord(tables[pi][0], tables[pi][1], C) < 0:\n", + " # Table hors du cercle\n", + " tables[pi] = (table[0] - dx, table[1] - dy)\n", + "\n", + "\n", + "C = 1\n", + "best_sol, dist = meilleur_table_alea(10, 11, C)\n", + "improve_distrib(200, best_sol, C, alpha=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "C = 1\n", + "ax.set_xlim([-C, C])\n", + "ax.set_ylim([-C, C])\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax.add_artist(c)\n", + "ax.plot([b[0] for b in best_sol], [b[1] for b in best_sol], 'o');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 - Vorono\u00ef" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.spatial import Voronoi, voronoi_plot_2d\n", + "points = numpy.array(best_sol)\n", + "vor = Voronoi(points)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "C = 1\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax.add_artist(c)\n", + "ax.plot([b[0] for b in best_sol], [b[1] for b in best_sol], 'o')\n", + "voronoi_plot_2d(vor, ax=ax)\n", + "ax.set_xlim([-C, C])\n", + "ax.set_ylim([-C, C]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On ajoute le bord." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "bords = []\n", + "for i in range(-5, 6):\n", + " bords.append((C, C * i / 5))\n", + " bords.append((-C, C * i / 5))\n", + " bords.append((C * i / 5, -C))\n", + " bords.append((C * i / 5, C))\n", + "points2 = numpy.vstack([points, bords])" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "C = 1\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax.add_artist(c)\n", + "ax.plot([b[0] for b in best_sol], [b[1] for b in best_sol], 'o')\n", + "vor2 = Voronoi(points2)\n", + "voronoi_plot_2d(vor2, ax=ax)\n", + "ax.set_xlim([-C, C])\n", + "ax.set_ylim([-C, C]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le diagramme de Vorono\u00ef permet de construire un voisinage de points pour qu'on peut rapprocher le plus possible d'en ensemble de triangle \u00e9quilat\u00e9raux ou rapprocher une table le plus possible de sa fronti\u00e8re la plus \u00e9loign\u00e9e. Apr\u00e8s quelques essais, je ne peux pas que ce fut l\u00e0 la meilleure inspiration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Q10 - KMeans\n", + "\n", + "Une autre id\u00e9e consiste \u00e0 recouvrir la salle de points puis \u00e0 effectuer un [KMeans](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html) pour cr\u00e9er artificiellement des zones." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def points_in_rectangle(N, R):\n", + " points = numpy.empty(((N+1)**2, 2)) \n", + " pos = 0\n", + " for i in range(0, N + 1):\n", + " for j in range(0, N + 1):\n", + " points[pos, 0] = 1.0 * i / N * R * 2 - R\n", + " points[pos, 1] = 1.0 * j / N * R * 2 - R\n", + " pos += 1\n", + " return points\n", + "\n", + "R = 1\n", + "points = points_in_rectangle(25, R)\n", + "\n", + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax.add_artist(c)\n", + "ax.plot(points[:, 0], points[:, 1], '.');" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n", + " n_clusters=11, n_init=10, n_jobs=None, precompute_distances='auto',\n", + " random_state=None, tol=0.0001, verbose=0)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.cluster import KMeans\n", + "km = KMeans(n_clusters=11)\n", + "km.fit(points)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "pred = km.predict(points)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les centres des clusters sont les emplacements des tables cherch\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 2, figsize=(10, 4))\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax[0].add_artist(c)\n", + "ax[0].set_xlim([-R, R])\n", + "ax[0].set_ylim([-R, R])\n", + "ax[0].scatter(points[:, 0], points[:, 1], c=pred)\n", + "\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax[1].add_artist(c)\n", + "ax[1].set_xlim([-R, R])\n", + "ax[1].set_ylim([-R, R])\n", + "ax[1].plot(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1], 'o')\n", + "vor2 = Voronoi(km.cluster_centers_)\n", + "voronoi_plot_2d(vor2, ax=ax[1])\n", + "ax[1].set_title(\"Centres des clusters - KMeans\")\n", + "ax[1].set_xlim([-R, R])\n", + "ax[1].set_ylim([-R, R]);" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.19622641509433936, 0.2016527778991591)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance_n_tables(distrib, R):\n", + " best = R ** 2\n", + " for i, table in enumerate(distrib):\n", + " proche, dist = table_proches(table[0], table[1], distrib, R, skip_i=i)\n", + " if dist < best:\n", + " best = dist\n", + " return best\n", + "\n", + "distance_n_tables(km.cluster_centers_, 1), distance_n_tables(best_sol, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On essaye avec un m\u00e9lange de lois normales." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.mixture import GaussianMixture\n", + "gau = GaussianMixture(11)\n", + "gau.fit(points)\n", + "pred = gau.predict(points)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1, 2, figsize=(10, 4))\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax[0].add_artist(c)\n", + "ax[0].set_xlim([-R, R])\n", + "ax[0].set_ylim([-R, R])\n", + "ax[0].scatter(points[:, 0], points[:, 1], c=pred)\n", + "\n", + "c = Rectangle((-1, -1), 2, 2, alpha=0.2, fill=True, facecolor='blue')\n", + "ax[1].add_artist(c)\n", + "ax[1].set_xlim([-R, R])\n", + "ax[1].set_ylim([-R, R])\n", + "ax[1].plot(gau.means_[:, 0], gau.means_[:, 1], 'o')\n", + "vor2 = Voronoi(gau.means_)\n", + "voronoi_plot_2d(vor2, ax=ax[1])\n", + "ax[1].set_title(\"Centres des clusters - gaussian mixture\")\n", + "ax[1].set_xlim([-R, R])\n", + "ax[1].set_ylim([-R, R]);" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.19622641509433936, 0.14695957901204992)" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "distance_n_tables(km.cluster_centers_, 1), distance_n_tables(gau.means_, 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les r\u00e9sultats sont trompeurs car les centres sont un peu trop pr\u00e8s du bord. Il faudra enlever des points sur le bord." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "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.7.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2021.ipynb b/_doc/practice/exams/td_note_2021.ipynb new file mode 100644 index 00000000..3fdbd573 --- /dev/null +++ b/_doc/practice/exams/td_note_2021.ipynb @@ -0,0 +1,1238 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A - Enonc\u00e9 24 novembre 2020\n", + "\n", + "Correction de l'examen du 24 novembre 2020." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 1 : gu\u00e9rison\n", + "\n", + "On commence par g\u00e9n\u00e9rer des donn\u00e9es artificielles \u00e0 partir de v\u00e9ritables donn\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
raddc
jour
2020-03-181627435
2020-03-192322642
2020-03-203128890
2020-03-2135801041
2020-03-2241881251
\n", + "
" + ], + "text/plain": [ + " rad dc\n", + "jour \n", + "2020-03-18 1627 435\n", + "2020-03-19 2322 642\n", + "2020-03-20 3128 890\n", + "2020-03-21 3580 1041\n", + "2020-03-22 4188 1251" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas \n", + "df = pandas.read_csv(\"https://www.data.gouv.fr/en/datasets/r/63352e38-d353-4b54-bfd1-f1b3ee1cabd7\", sep=\";\")\n", + "gr = df[[\"jour\", \"rad\", \"dc\"]].groupby([\"jour\"]).sum()\n", + "gr.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
jourraddc
02020-03-18NaNNaN
12020-03-19695.0207.0
22020-03-20806.0248.0
32020-03-21452.0151.0
42020-03-22608.0210.0
\n", + "
" + ], + "text/plain": [ + " jour rad dc\n", + "0 2020-03-18 NaN NaN\n", + "1 2020-03-19 695.0 207.0\n", + "2 2020-03-20 806.0 248.0\n", + "3 2020-03-21 452.0 151.0\n", + "4 2020-03-22 608.0 210.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diff = gr.diff().reset_index(drop=False)\n", + "diff.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On convertit la date en jour de l'ann\u00e9e puis on simule un loi exponentielle de param\u00e8tre 14 pour avoir la date de sortie." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
entreesortieissue
039791
171791
258791
379791
453791
\n", + "
" + ], + "text/plain": [ + " entree sortie issue\n", + "0 39 79 1\n", + "1 71 79 1\n", + "2 58 79 1\n", + "3 79 79 1\n", + "4 53 79 1" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy.random as rnd\n", + "\n", + "\n", + "def donnees_artificielles(hosp, mu=14, nu=21):\n", + " dt = pandas.to_datetime(hosp['jour'])\n", + " res = []\n", + " for i in range(hosp.shape[0]):\n", + " date = dt[i].dayofyear\n", + " h = hosp.iloc[i, 1]\n", + " delay = rnd.exponential(mu, int(h))\n", + " for j in range(delay.shape[0]):\n", + " res.append([date - int(delay[j]), date, 1])\n", + " h = hosp.iloc[i, 2]\n", + " delay = rnd.exponential(nu, int(h))\n", + " for j in range(delay.shape[0]):\n", + " res.append([date - int(delay[j]), date , 0])\n", + " return pandas.DataFrame(res, columns=[\"entree\", \"sortie\", \"issue\"])\n", + " \n", + " \n", + "data = donnees_artificielles(diff[1:].reset_index(drop=True))\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "data.to_csv(\"examen2021.csv\", index=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1\n", + "\n", + "On r\u00e9cup\u00e8re les donn\u00e9es." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
entreesortieissue
049791
127791
273791
374791
448791
\n", + "
" + ], + "text/plain": [ + " entree sortie issue\n", + "0 49 79 1\n", + "1 27 79 1\n", + "2 73 79 1\n", + "3 74 79 1\n", + "4 48 79 1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas\n", + "df = pandas.read_csv(\"http://www.xavierdupre.fr/enseignement/complements/examen2021.zip\")\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2 : dur\u00e9e de gu\u00e9rison" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([30, 52, 6, 5, 31], dtype=int64), array([1, 1, 1, 1, 1], dtype=int64))" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "duree = df['sortie'] - df['entree']\n", + "duree = duree.values # conversion en numpy\n", + "issue = df['issue'].values\n", + "duree[:5], issue[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3 : estimateur Kaplan-Meier (1)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.98965342710248" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = 10\n", + "nt = duree[(duree >= t)].shape[0]\n", + "dt = duree[(duree == t) & (issue == 0)].shape[0]\n", + "st = 1. - dt / nt\n", + "st" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4 : courbe de Kaplan-Meier" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "T = [0]\n", + "St = [1.]\n", + "for t in range(0, 150):\n", + " nt = duree[(duree >= t)].shape[0]\n", + " dt = duree[(duree == t) & (issue == 0)].shape[0]\n", + " st = 1. - dt / nt\n", + " T.append(t)\n", + " St.append(st * St[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5 : graphe" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + "ax.plot(T, St);" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy\n", + "from lifelines import KaplanMeierFitter\n", + "fig, ax = plt.subplots(1, 1, figsize=(10, 4))\n", + "ax.plot(T, St, label=\"custom\", lw=10)\n", + "\n", + "kmf = KaplanMeierFitter()\n", + "kmf.fit(duree, (issue == 0).astype(numpy.int32))\n", + "kmf.plot(ax=ax)\n", + "ax.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q6 : application aux donn\u00e9es publiques\n", + "\n", + "Les donn\u00e9es accessibles librement sur le portail [data.gouv.fr](https://www.data.gouv.fr/fr/) recensent les entr\u00e9es et les sorties des personnes sans relier une entr\u00e9e et une sortie sp\u00e9cifique. Si N est personnes sont sorties gu\u00e9ries, on ne sait pas quand elles sont entr\u00e9es. Donc le calcul ci-dessus n'est pas possible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1 : t + 1" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy\n", + "\n", + "N = 10\n", + "M = numpy.zeros((N, N))\n", + "M[4, 5] = 1\n", + "M" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def propagation(M):\n", + " M2 = M.copy()\n", + " M2[1:, :] = numpy.maximum(M2[1:, :], M[:-1, :])\n", + " M2[:-1, :] = numpy.maximum(M2[:-1, :], M[1:, :])\n", + " M2[:, 1:] = numpy.maximum(M2[:, 1:], M[:, :-1])\n", + " M2[:, :-1] = numpy.maximum(M2[:, :-1], M[:, 1:])\n", + " return M2\n", + " \n", + "propagation(M.copy())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2 : apr\u00e8s T it\u00e9ration" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", + " [0., 0., 0., 1., 1., 1., 1., 1., 0., 0.],\n", + " [0., 0., 1., 1., 1., 1., 1., 1., 1., 0.],\n", + " [0., 0., 0., 1., 1., 1., 1., 1., 0., 0.],\n", + " [0., 0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def propagation_n(M, t):\n", + " for i in range(t):\n", + " M = propagation(M)\n", + " return M\n", + "\n", + "propagation_n(M, 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3 : vaccin" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0, 0, 0, 0, 0, 0, 1, 0, 1, 0],\n", + " [0, 0, 0, 0, 0, 0, 1, 0, 0, 1],\n", + " [1, 0, 0, 0, 0, 0, 1, 0, 1, 1],\n", + " [0, 1, 0, 1, 0, 0, 0, 0, 0, 0],\n", + " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", + " [0, 0, 1, 1, 0, 0, 1, 0, 1, 0],\n", + " [0, 0, 1, 0, 0, 0, 0, 1, 0, 0],\n", + " [0, 0, 1, 0, 0, 0, 1, 0, 0, 1],\n", + " [0, 0, 1, 0, 0, 0, 0, 1, 0, 0],\n", + " [0, 0, 0, 1, 0, 0, 0, 1, 0, 0]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p = 0.3\n", + "vaccine = (numpy.random.rand(N, N) <= p).astype(numpy.int32)\n", + "vaccine" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def propagation_vaccine(M, vaccine):\n", + " M2 = M.copy()\n", + " M2[1:, :] = numpy.maximum(M2[1:, :], M[:-1, :])\n", + " M2[:-1, :] = numpy.maximum(M2[:-1, :], M[1:, :])\n", + " M2[:, 1:] = numpy.maximum(M2[:, 1:], M[:, :-1])\n", + " M2[:, :-1] = numpy.maximum(M2[:, :-1], M[:, 1:])\n", + " M2 = numpy.minimum(M2, 1 - vaccine)\n", + " return M2\n", + "\n", + "vaccine[4, 5] = 0\n", + "propagation_vaccine(M, vaccine)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4 : apr\u00e8s T heures" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 1., 1., 1., 0., 0.],\n", + " [0., 0., 1., 1., 1., 1., 1., 1., 1., 0.],\n", + " [0., 0., 0., 0., 1., 1., 0., 1., 0., 0.],\n", + " [0., 0., 0., 0., 1., 1., 1., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def propagation_n_vaccine(M, t, vaccine):\n", + " for i in range(t):\n", + " M = propagation_vaccine(M, vaccine)\n", + " return M\n", + "\n", + "propagation_n_vaccine(M, 3, vaccine)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5 : variation" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pprop
00.709.1
10.809.6
20.853.8
30.862.4
40.872.4
50.881.4
60.891.6
70.901.2
80.941.2
90.951.5
100.961.0
110.971.2
120.981.2
130.991.1
141.001.0
\n", + "
" + ], + "text/plain": [ + " p prop\n", + "0 0.70 9.1\n", + "1 0.80 9.6\n", + "2 0.85 3.8\n", + "3 0.86 2.4\n", + "4 0.87 2.4\n", + "5 0.88 1.4\n", + "6 0.89 1.6\n", + "7 0.90 1.2\n", + "8 0.94 1.2\n", + "9 0.95 1.5\n", + "10 0.96 1.0\n", + "11 0.97 1.2\n", + "12 0.98 1.2\n", + "13 0.99 1.1\n", + "14 1.00 1.0" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas\n", + "\n", + "res = []\n", + "for p in [0.7, 0.8, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0]:\n", + " cont = []\n", + " for test in range(0, 10):\n", + " vaccine = (numpy.random.rand(N, N) <= p).astype(numpy.int32)\n", + " M[4, 5] = 1\n", + " vaccine[4, 5] = 0\n", + " M = propagation_n_vaccine(M, 3, vaccine)\n", + " contamine = M.ravel().sum()\n", + " cont.append(contamine)\n", + " cont = numpy.array(cont)\n", + " res.append(dict(p=p, prop=cont.mean()))\n", + "\n", + "df = pandas.DataFrame(res)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAEKCAYAAAALoA6YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAg6UlEQVR4nO3de3RV5Z3/8feT68mNJISQ2wkEFAUCguSIIt5RwVuhQNBWR1s73qYXZ1Y7/bW/mV9b2zW1ztRZrbV1xo46ulQsF+u1KpVqLXjBhItcFbmHBBJuAUJCbs/vjxOQhISc5Jxkn73zea2VlZOz906+z9rwyc6zn/08xlqLiIi4T4zTBYiISO8owEVEXEoBLiLiUgpwERGXUoCLiLiUAlxExKW6DXBjzJPGmGpjzLpT3htsjPmzMWZz2+fMvi1TREQ6CuUK/H+BGR3e+wGw1Fo7Clja9rWIiPQjE8qDPMaYIuA1a+24tq8/Ba6w1lYZY/KAd6215/ZppSIi0k5cL4/LsdZWAbSF+NBQDhoyZIgtKirq5Y8UERmYysvL91lrszu+39sAD5kx5m7gboBhw4ZRVlbW1z9SRMRTjDE7Onu/t6NQ9rZ1ndD2ubqrHa21j1trA9baQHb2ab9ARESkl3ob4K8Ad7S9vgN4OTLliIhIqEIZRjgf+AA41xhTYYz5BvAL4BpjzGbgmravRUSkH3XbB26t/UoXm6ZFuBYRkU41NTVRUVFBQ0OD06X0KZ/Ph9/vJz4+PqT9+/wmpohIuCoqKkhLS6OoqAhjjNPl9AlrLfv376eiooIRI0aEdIwepReRqNfQ0EBWVpZnwxvAGENWVlaP/spQgIuIK3g5vE/oaRvVhSIhqzveTFVtPZWHGqiqredAXRO3XFBIZkqC06WJDEgKcAGgoamFPbUNVNbWU9UW0JW1DVQdqqeqtoHKQ/Ucbmg+7bgjDU18f8ZoByoWEQX4ANDU0sreww0ng7iqLZgra4NBXXWogf11jacdNzglgbx0H/7MZCaPGExeehL5GT7y0pPIS/fx/15ex+KVFXz32nOJjfH+n7ci3WlpaSE2Nrbffp4C3OVaWi37jh4/GcwnA/qUro7qI8fpOGdZmi+O/PQk8jJ8jC/IID/dR15G0snPeek+fPFn/od4c6CQ+55byXuba7jy3JCmwxFxre3btzNjxgwuvPBCVq1axTnnnMMzzzzD2LFjufPOO1myZAnf+ta3sNby85//HGstN9xwAw899BAAqamp3HPPPbzzzjtkZmbywgsvEO7T6QrwKGat5UBdY7tgbtfFcaiBvYcbaG5tn85J8bHkZfjIT0/islHZ7YL5xOfUxPBP/bQxOWQmx7OorEIBLv3mgVfXs6HycES/59j8Qfz4puJu9/v000954oknmDp1KnfeeSe/+93vgOD47WXLllFZWclFF11EeXk5mZmZXHvttbz00kvMmjWLuro6Jk2axMMPP8xPf/pTHnjgAR599NGw6laAO8Ray+GG5pNdGJUdPlfVBgP7eHNru+MSYmPITfeRl+5r69Y4JZjbujjSk+L75Y59QlwMs84v4LkPd3KwrlE3M8XzCgsLmTp1KgC33XYbjzzyCAA333wzAB9//DFXXHHFySvrW2+9lffee49Zs2YRExNzcr/bbruN2bNnh12PAryPHGtsPtmFcVpAt/VB1zW2tDsmNsaQk5ZIXkYS4wrSubY4NxjQp/Q9Z6UkEBNF/c2lJYU8tXw7L6/ezdemhvbwgUg4QrlS7isdL4xOfJ2SkgIEL8x6+716QwHeC8eb20ZsnHKl3LEPura+6bTjstMSyU/3cXZ2KpeOGnKyD/pEQGenJhIX666h+WPzBzGuYBALyysU4OJ5O3fu5IMPPmDKlCnMnz+fSy65hFWrVp3cfuGFF3L//fezb98+MjMzmT9/Pt/+9rcBaG1tZdGiRdxyyy08//zzXHLJJWHXowDvoLmllb1Hjn8xSqOTm4P7jp4+YiMzOZ689CT8mUlcUDT4ZB90XrqP/Iwkcgb5SIhzVziHqrSkkB+/sp71lbUU56c7XY5InxkzZgxPP/0099xzD6NGjeK+++7jN7/5zcnteXl5PPjgg1x55ZVYa7n++uuZOXMmELxKX79+PSUlJaSnp/OHP/wh7HpCWlItUgKBgHVyQYfWVktNJyM2Th3/XH2kgdaOIzYS49pdKeedEswnujiSEvpv6FC0OXSskcn/tpSvXjiMn3zJuT9vxbs2btzImDFjHK1h+/bt3Hjjjaxbt677nTuRmprK0aNHu92vs7YaY8qttYGO+3rmCry3IzZ88TEnuzIuGTWk3TC6EwGd5gttZrCBKiM5gWuKc3h59W5+eP1oEuMG7i8zkf7kigDv7YiN+FjTNmIjiQuKMtuN1jjRxZGR3D8jNryutMTP659UsXRjNdePz3O6HJGIKyoq6vXVNxDS1XdPuSLA//WldTz30c5278UYyBkUHE5XXJDONWNz2ndxZPgYkpIYVSM2vOzSUdnkDvKxsGyXAlz6hLXW8xdbPe3SdkWAXz02h+FZye0Cemia+0ZseFlsjGFOSQGPvbuFPbUN5Kb7nC5JPMTn87F//35PTyl7Yj5wny/0/zuuCPArzx2qJ/1cYG5JIb99ZwsvrqrgH6442+lyxEP8fj8VFRXU1NQ4XUqfOrEiT6hcEeDiDiOGpDC5aDCLyiq47/KzPHulJP0vPj4+5FVqBhL1QUhEzQ342bqvjvIdB50uRcTzFOASUTeMzyM5IZaFZRVOlyLieQpwiaiUxDhuGJ/Ha59Ucqzx9AUgRCRyFOAScfMuKKSusYU/rd3jdCkinqYAl4gLDM9kxJAUFpTtcroUEU9TgEvEGWOYW+JnxbYD7Nhf53Q5Ip6lAJc+MXtSATEGFpXrZqZIX1GAS5/IS0/i0lHZLCqvoKXj9I4iEhEKcOkz8wKFVNU2sPzzfU6XIuJJCnDpM1ePHUpGcrxuZor0EQW49JnEuFhmTshnyYa91B47fYk5EQmPAlz6VGmgkMbmVl5Zs9vpUkQ8RwEufWpcQTpj8gaxQI/Wi0ScAlz63LyAn7W7a9lYddjpUkQ8RQEufW7mxALiY40muBKJMAW49LnBKQlcPSaHl1bvprHDuqUi0nsKcOkX8wKFHKhr5C+bqp0uRcQzFODSLy4dNYShaYks1JhwkYgJK8CNMf9kjFlvjFlnjJlvjNFKttKpuNgY5pT4efezGqoPNzhdjogn9DrAjTEFwHeAgLV2HBAL3BKpwsR7Skv8tLRaXlylMeEikRBuF0ockGSMiQOSgcrwSxKvGpmdSsnwTBaW7cJaTXAlEq5eB7i1djfwS2AnUAXUWmuXRKow8aZ5AT9baupYteuQ06WIuF44XSiZwExgBJAPpBhjbutkv7uNMWXGmLKampreVyqecMN5+STFx+pmpkgEhNOFcjWwzVpbY61tAl4ELu64k7X2cWttwFobyM7ODuPHiRekJsZx/fg8Xl1TRX1ji9PliLhaOAG+E7jIGJNsjDHANGBjZMoSLysN+Dl6vJk31lU5XYqIq4XTB/4RsAhYCaxt+16PR6gu8bALRwxmeFayHq0XCVNYo1CstT+21o621o6z1v6dtfZ4pAoT7zLGMHeSnw+27mfn/mNOlyPiWnoSUxwxp8SPMbBopa7CRXpLAS6OyM9I4pKzh7C4vIJWLXos0isKcHFMaaCQ3YfqeX/LfqdLEXElBbg45tqxOQzyxbGwXGPCRXpDAS6O8cXHMnNiAW+u20NtvRY9FukpBbg4qjTg53hzK6+u0TQ6Ij2lABdHjS9IZ3RuGgvLNRpFpKcU4OIoYwxzS/ys2XWIz/YecbocEVdRgIvjvnx+AXExRhNcifSQAlwcl5WayLQxQ/njqt00tWjRY5FQKcAlKpSWFLLvaCPvaNFjkZApwCUqXHFuNtlpibqZKdIDCnCJCnGxMcw+v4C/bKqm5ojmRBMJhQJcokZpILjo8Uta9FgkJApwiRpnD03j/GEZLNCixyIhUYBLVCktKWRz9VHWVNQ6XYpI1FOAS1S5cUIevvgYjQkXCYECXKLKIF88143L45U1lTQ0adFjkTNRgEvUKQ34OdLQzFvr9zhdikhUU4BL1LloRBb+zCQWqBtF5IwU4BJ1YmIMpSWFvL9lPxUHteixSFcU4BKV5pQUALC4XGPCRbqiAJeo5M9M5uKzslhYvkuLHot0QQEuUWteoJCKg/V8uE2LHot0RgEuUWt6cS5pvjgWlmmCK5HOKMAlavniY/nShHzeWFfF4QYteizSkQJcolppoJCGplZeW1PldCkiUUcBLlFtgj+dUUNTWViuMeEiHSnAJaoZY5gXKGTVzkN8Xq1Fj0VOpQCXqDfr/AJiY4xuZop0oACXqJedlshVo4eyeKUWPRY5lQJcXKG0xM++o8f566c1TpciEjUU4OIKV44eypDUBN3MFDmFAlxcIT42hi+fX8DSjdXsP6pFj0VAAS4uUhoopLnV8kcteiwCKMDFRc7JSWNCYQaLyiu06LEICnBxmdISP5v2HGHtbi16LBJWgBtjMowxi4wxm4wxG40xUyJVmEhnbpqQT2JcjMaEixD+FfivgTettaOBCcDG8EsS6Vp6UjwzxuXy8urdWvRYBrxeB7gxZhBwGfAEgLW20Vp7KEJ1iXSptKSQww3NLNmw1+lSRBwVzhX4SKAGeMoYs8oY8z/GmJQI1SXSpYvPyqIgI4mFWvRYBrhwAjwOmAQ8Zq09H6gDftBxJ2PM3caYMmNMWU2NnqKT8MXEGOaU+Fn2+T52H6p3uhwRx4QT4BVAhbX2o7avFxEM9HastY9bawPW2kB2dnYYP07kC6UlfqyFF8t1M1MGrl4HuLV2D7DLGHNu21vTgA0RqUqkG4WDk5kyMouF5RVa9FgGrHBHoXwbeM4Y8wkwEfh52BWJhKg04GfngWOs2H7A6VJEHBFWgFtrV7d1j5xnrZ1lrT0YqcJEunPduDxSE7XosQxcehJTXCspIZabJuTxp7VVHD3e7HQ5Iv1OAS6uVhoopL6phdc/qXS6FJF+pwAXVzu/MIOzslNYoG4UGYAU4OJqxhhKA4WU7zjIlpqjTpcj0q8U4OJ6s9sWPV6kMeEywCjAxfWGDvJxxTnZLC6voFmLHssAogAXTygNFFJ95Dh/27zP6VJE+o0CXDzhqtFDGZySwAJNcCUDiAJcPCEhLoZZEwt4e+NeDtQ1Ol2OSL9QgItnzLvAT1OL5eXVWvRYBgYFuHjG6NxBjC9I15hwGTAU4OIp8wJ+NlYdZp0WPZYBQAEunvKlCQUkxMVotR4ZEBTg4inpyfFcOzaHl9dUcrxZix6LtynAxXPmBQo5dKyJtzdUO12KSJ9SgIvnTD17CHnpPo0JF89TgIvnxMYY5pb4+dvmGqpqteixeJcCXDxpbomfVgsvrtSYcPEuBbh40vCsFCaPGMzCsl1Yq0WPxZsU4OJZ8wKFbN9/jLIdWqpVvEkBLp51/fhcUhJiWfCxbmaKNynAxbOSE+K48bx8Xl9bRZ0WPRYPUoCLp5UG/BxrbOH1tVVOlyIScQpw8bSS4ZmMHJLCIk1wJR6kABdPM8YwN+BnxfYDbNtX53Q5IhGlABfPmzPJT4yBReW6mSneogAXz8sZ5OPyc7JZXL6bllaNCRfvUIDLgFAaKGTP4Qb+trnG6VJEIkYBLgPCtDFDyUyOZ2G5bmaKdyjAZUBIjItl5sQC/rx+L4eOadFj8QYFuAwYpQE/jS2tvLy60ulSRCJCAS4DRnF+OsX5g1io0SjiEQpwGVBKS/ys232YDZWHnS5FJGwKcBlQZk4sICE2Rlfh4gkKcBlQMlMSuGZsDi+t2k1jc6vT5YiERQEuA87cgJ+Dx5pYunGv06WIhEUBLgPOZaOyyR3k05hwcb2wA9wYE2uMWWWMeS0SBYn0tdgYw+xJBbz7aTV7Dzc4XY5Ir0XiCvx+YGMEvo9IvykNFGrRY3G9sALcGOMHbgD+JzLliPSPEUNSuKAoU4sei6uFewX+K+D7gG7ni+uUlhSydV8dK3dq0WNxp14HuDHmRqDaWlvezX53G2PKjDFlNTWaCU6ix/Xn5ZGcEMtCrdYjLhXOFfhU4EvGmO3AC8BVxphnO+5krX3cWhuw1gays7PD+HEikZWaGMf14/N4dU0lxxq16LG4T68D3Fr7Q2ut31pbBNwC/MVae1vEKhPpB/MChdQ1tvDG2j1OlyLSYxoHLgPaBUWZFGUls6BMj9aL+0QkwK2171prb4zE9xLpT8YY5pb4+WjbASoOHnO6HJEe0RW4DHg3nJcPwJL1erRe3EUBLgPeiCEpnJOTypIN6gcXd1GAiwDTi3NZse0AB+q03Jq4hwJcBLh2bC6tFt7WDIXiIgpwEWBcwSAKMpJYsl7dKOIeCnARgqNRrhmbw3ub91F3XA/1iDsowEXaTC/OpbG5lfc+05QP4g4KcJE2FxRlkpkcz1vqRhGXUICLtImLjWHamByWbqrWepniCgpwkVNML87lSEMzH23b73QpIt1SgIuc4tJRQ0iKj1U3iriCAlzkFL74WC4/J5sl6/fS2qqVeiS6KcBFOpg+LofqI8dZU3HI6VJEzkgBLtLBVefmEBdjeEuTW0mUU4CLdJCeHM9FI7NYsn6PFjyWqKYAF+nE9OIctu6r4/Pqo06XItIlBbhIJ64ZmwvAkg3qRpHopQAX6URuuo+JhRkaTihRTQEu0oVri3P4pKKWykP1Tpci0ikFuEgXphcHu1H+rG4UiVIKcJEunJWdytlDU9WNIlFLAS5yBtOLc/ho2wEOaqk1iUIKcJEzuHZsLi2tlqWbqp0uReQ0CnCRMzjPn05euk9LrUlUUoCLnIExhmvH5vDe5hrqG1ucLkekHQW4SDemF+fS0NTKX7XUmkQZBbhINy4YMZj0pHh1o0jUUYCLdCM+NoZpY4aydFM1TS1aak2ihwJcJATTi3OprW9ixbYDTpcicpICXCQEl43Kxhcfo4d6JKoowEVCkJQQy2WjgkutNbe00tJqz/ih5dikP8Q5XYCIW0wvzmXJhr2c/S9vdLtvjIHf3TqJGePy+qEyGagU4CIhunFCHgfqGqlv6n48+MLyXTz6zudML87FGNMP1clApAAXCVFiXCx3XTYypH0HpyTwry+t4+PtB5k8YnAfVyYDlfrARfrAnEl+MpLjeWLZVqdLEQ9TgIv0gaSEWL46eRhLNuxl5/5jTpcjHqUAF+kjt08pItYYnnp/m9OliEf1OsCNMYXGmHeMMRuNMeuNMfdHsjARt8tN93HjeXks+HgXhxuanC5HPCicK/Bm4LvW2jHARcA3jTFjI1OWiDd845KR1DW2sODjXU6XIh7U6wC31lZZa1e2vT4CbAQKIlWYiBeM96czecRgnlq+nWbNoyIRFpFhhMaYIuB84KNIfL9OPXXD6e8Vz4LJd0HjMXiu9PTtE78K598Kdfthwe2nb7/gThg3B2or4MV7Tt9+8bfg3Otg32Z49R9P337Z9+CsK6HqE3jzh6dvn/YjGHYh7PwIlv709O0zHoS882DLO/DeL0/fftOvYMgo+PQNeP/R07fP/m9I98O6xfDxk6dvn/cMpGTBqudg9fOnb791ISQkw4rfw/qXTt/+9deDn5c/Ap+91X5bvA9uWxx8/dd/h61/bb89ORNufjb4+u2fwK6P228flA9zfh98/cYPYM/a9tuzzoIvPRJ8/cp3YP+W9ttzx8N1vwi+XnwXHK5sv73wArj6J8HXf7gNjh1sv33k5XD594Ovn50DTQ3tt58zHaZ+J/g6zH97/9X8Iz47doTax1LJSkkMbte/vYH3b+9EmyIo7JuYxphUYDHwj9baw51sv9sYU2aMKaup0XzKMvBkJseTGBdDVW1D9zuL9ICxtvdzNhhj4oHXgLestf/Z3f6BQMCWlZX1+ueJuNVTy7fxwKsbeOmbU5lYmOF0OeIyxphya22g4/vhjEIxwBPAxlDCW2QgKw0UkpYYxxPLNKRQIiecLpSpwN8BVxljVrd9XB+hukQ8JTUxjlsmF/KntVVUHqp3uhzxiHBGoSyz1hpr7XnW2oltH3+KZHEiXnLHxUVYa3n6g+1OlyIeoScxRfqJPzOZ68blMf+jndQdb3a6HPEABbhIP7rzkhEcbmhm8coKp0sRD1CAi/SjkuGZTCzM4Knl27Vqj4RNAS7Sz75xyQi27avjL5uqQ9q/5shxfrN0M699Utn9zjKgaEEHkX523bhc8tN9PLFsG1ePzelyv8+rj/LEsq0sXrmbxubgY/i7DtRz7+UjtcqPAApwkX4XFxvDHRcX8eAbm1hfWUtxfvrJbdZaPt5+kMff28LbG6tJiIthbomf26cM53fvbOGhNzdRc+Q4/3rDGGJivB3i63bXUpiZTHpyvNOlRC0FuIgDbpk8jF8v3cyTy7bz8LwJNLe08tb6vTz+t62s2XWIzOR4vjNtFLdPGc6Q1OD8Kb+6eSJZqQk8uXwb+44e55elE0iI814v6NHjzfzb6xuZv2Ino3PTWHDvFAb5FOKdUYCLOCA9KZ7SEj/Pr9jJ2UNTeX7FDnYdqKcoK5mfzRrH3El+khJi2x0TE2P40Y1jGZrm46E3N3HwWCOP3VZCaqJ3/ht/uHU/31u4ht2H6pk9qYBXVldy37PlPPW1yZ78ZRWusOZC6SnNhSLyhe376rjy4XexNjg65a5LR3LN2BxiQ+gaWVC2ix++uJbi/EE8+bULTl6lu1VDUwv//uanPLl8G0VZyTw8bwIlwwezuLyC7y5cw5fPL+A/500YsH3/Xc2F4p1f3SIuUzQkhSfuCJCelEDJ8MweHTsvUEhWSgLffH4lpf/1Ac/cOZnCwcl9VGnfWrXzIN9duIatNXXcMWU4/+e60SQnBKNpTomfqtp6frnkM/IzfPzz9NEOVxtd9DeJiIOuGp3T4/A+YdqYHJ77+ws5UNfI7MfeZ0PlabM5R7XjzS38x1ubmPPY+zQ0tvDc31/IAzPHnQzvE7555dl8ZfIwfvvOFp79cIdD1UYnBbiIi5UMH8yie6cQF2O4+b8/4MOt+50uKSQbKg8z89Hl/PadLcwt8fPmP13G1LOHdLqvMYafzSzmqtFD+dHL63h7w95+rjZ6qQ9cxAMqD9Vz+5Mr2HngGN+84mwGJUVv72hVbQNPLd9GRnICv5g9nmljuh4Lf6pjjc3c8viHfLb3CC/cPaVH86pbaynfcZC1u2tD2j8lIY6JwzI4Ozs1KoZrdtUHrgAX8YhDxxq565kyPt5+sPudHXbjeXn8bOY4MlMSenRczZHjzH5sOceOt7D4vospGpJyxv07Ds/sqTRfHJOGZVIyPPgxoTDDkVE/CnCRAcBaS219k9NlnFFsjCEtjHHdW2uOMuex90lPimfxfReT1ckInLrjzSws28UTy7edHJ75jUtHct24XOJCuKLeX9fIqp2HKN9xkJU7DvJZ9RGshRgDo3MHnQz0kuGZ+DOT+nx0jAJcRDyjfMcBvvr7jxiTN4j5d110csx89eEGnv5gO89+uJPa+qYeD8/sSm19E6t3fRHoq3YepK6xBYChaYknw3zS8EyK8weRGBfbzXfsGQW4iHjKm+v2cN9z5UwbncP3pp/Dk8u28dKqSppaW5k+Npe7LhtByfDBffKzW1otn+45QvmOA6xsu1LfeeAYAAlxMZxXkH4y0CcNyyQ7Lbxx+gpwEfGcp9/fzo9fWQ+ALz6GeYFC7pw6otu+8b5QfaSBlTsOsXLnweAN04paGluCk5ANz0rmwdnjufiszkfadEcP8oiI55xYpq6usYWvTh7W45uikTQ0zceMcbnMGJcLBMe5r9t9mJU7goE+NM0X8Z+pK3ARkSjX1RW4HuQREXEpBbiIiEspwEVEXEoBLiLiUgpwERGXUoCLiLiUAlxExKUU4CIiLtWvD/IYY2qA3i6pMQTYF8FynKS2RB+vtAPUlmgVTluGW2uzO77ZrwEeDmNMWWdPIrmR2hJ9vNIOUFuiVV+0RV0oIiIupQAXEXEpNwX4404XEEFqS/TxSjtAbYlWEW+La/rARUSkPTddgYuIyCmiIsCNMTOMMZ8aYz43xvygk+3/bIxZ3faxzhjTYowZHMqx/SnMdmw3xqxt2+b4pOkhtCXdGPOqMWaNMWa9MebroR7b38Jsi9vOS6Yx5o/GmE+MMSuMMeNCPbY/hdmOqDknxpgnjTHVxph1XWw3xphH2tr5iTFm0inbwj8f1lpHP4BYYAswEkgA1gBjz7D/TcBfenNstLaj7evtwBCnz0eobQH+L/BQ2+ts4EDbvlFzTsJti0vPy38AP257PRpY2pt/n9Hajig8J5cBk4B1XWy/HngDMMBFwEeRPB/RcAU+GfjcWrvVWtsIvADMPMP+XwHm9/LYvhROO6JNKG2xQJoxxgCpBEOvOcRj+1M4bYk2obRlLLAUwFq7CSgyxuSEeGx/CacdUcVa+x7Bfy9dmQk8Y4M+BDKMMXlE6HxEQ4AXALtO+bqi7b3TGGOSgRnA4p4e2w/CaQcEQ2SJMabcGHN3n1UZmlDa8igwBqgE1gL3W2tbQzy2P4XTFnDfeVkDzAYwxkwGhgP+EI/tL+G0A6LrnHSnq7ZG5HxEw6LGppP3uhoacxOw3Fp74jdeT47ta+G0A2CqtbbSGDMU+LMxZlPbb3cnhNKW6cBq4CrgLII1/y3EY/tTr9tirT2M+87LL4BfG2NWE/xltIrgXxPRdF7CaQdE1znpTldtjcj5iIYr8Aqg8JSv/QSvhDpzC+27HXpybF8Lpx1YayvbPlcDfyT4J5ZTQmnL14EX2/40/BzYRrCvMprOCYTXFtedF2vtYWvt1621E4HbCfbpbwvl2H4UTjui7Zx0p6u2RuZ8RMFNgDhgKzCCLzrzizvZL51gX1NKT491QTtSgLRTXr8PzIjmcwI8Bvyk7XUOsJvgZD1Rc04i0BY3npcMvrgBexfB/lfX/V85Qzui6py01VFE1zcxb6D9TcwVkTwfjjW6QyOvBz4jeFf2X9reuxe495R9vga8EMqxbmsHwTvRa9o+1jvdjlDaAuQDSwj+ebsOuC0az0k4bXHpeZkCbAY2AS8CmdF4Xnrbjmg7JwT/kq4CmgheVX+jQzsM8Nu2dq4FApE8H3oSU0TEpaKhD1xERHpBAS4i4lIKcBERl1KAi4i4lAJcRMSlFOAiIi6lABcRcSkFuAxoxpgiY8wmY8zTbfM1L2qbbEwk6inAReBc4HFr7XnAYeAfHK5HJCQKcBHYZa1d3vb6WeASJ4sRCZUCXOT0aTw1v4S4ggJcBIYZY6a0vf4KsMzJYkRCpQAXgY3AHcaYT4DBBKeXFYl60bAij4jTWq219zpdhEhP6QpcRMSlNB+4iIhL6QpcRMSlFOAiIi6lABcRcSkFuIiISynARURcSgEuIuJS/x/vKrtmCvBIKgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ax = df.plot(x=\"p\", y=\"prop\")\n", + "ax.plot([0.7, 1.], [2, 2], \"--\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans cette configuration, en supposant qu'un seul \u00e9l\u00e8ve est contamin\u00e9, il faudrait vacciner \u00e0 plus de 85% pour avoir une chance de ne pas avoir une nouvelle contamination.\n", + "\n", + "Ce r\u00e9sultat ne change pas si la taille de la matrice change. Il change en revanche en fonction du nombre de tirages, ici 10. Pour n'avoir aucune propagation, il faut entourer la personne contamin\u00e9 de 4 personnes vaccin\u00e9es. $p$ est la probabilit\u00e9 pour une personn\u00e9 d'\u00eatre vaccin\u00e9e (ou immunis\u00e9e si la vaccination est faite sur 100% des personnes). $p^4$ est la probabilit\u00e9 d'avoir 4 personnes vaccin\u00e9es. $q=1-p^4$ est la probabilit\u00e9 qu'une personne ne soient pas immunis\u00e9es parmi les 4. $1 - (1-q)^{10}$ est la probabilit\u00e9 que 10 cours de 3h se passent bien sans contamination." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9999" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p = 0.9\n", + "p4 = 1 - (1 - p) **4\n", + "p4" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "df2 = df.copy()\n", + "df2[\"P4**100\"] = 1 - df2[\"p\"] ** 40" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "fig, ax = plt.subplots(1, 2, figsize=(10, 4))\n", + "df2.plot(x=\"p\", y=\"prop\", ax=ax[0])\n", + "ax[0].plot([0.7, 1.], [2, 2], \"--\")\n", + "df2.plot(x=\"p\", y=\"P4**100\", ax=ax[1]);" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "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.7.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2022.ipynb b/_doc/practice/exams/td_note_2022.ipynb new file mode 100644 index 00000000..f627c828 --- /dev/null +++ b/_doc/practice/exams/td_note_2022.ipynb @@ -0,0 +1,1120 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A - Enonc\u00e9 3 novembre 2021\n", + "\n", + "Correction de l'examen du 3 novembre 2021." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 1 : multiplication de matrices\n", + "\n", + "On a besoin d'une fonction qui mesure le temps d'ex\u00e9cution d'une fonction." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.10280692000000005" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import time\n", + "\n", + "def mesure_temps_fonction(fct, N=100):\n", + " begin = time.perf_counter()\n", + " for i in range(N):\n", + " fct()\n", + " return (time.perf_counter() - begin) / N\n", + "\n", + "mesure_temps_fonction(lambda: time.sleep(0.1), N=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1 : Pourquoi (m1 @ m2) @ m3 est-il plus lent que m1 @ (m2 @ m3) ? (2 points)\n", + "\n", + "Il y a deux options possible. Il suffit de compter le nombre d'op\u00e9rations dans chaque option. Le co\u00fbt d'une multiplication $M_{ab} \\times m_{bc}$ est de l'ordre de $O(abc)$. Donc :\n", + "\n", + "* cout((m1 @ m2) @ m3) ~ O(997 * 93 * 1003 + 997 * 1003 * 97) = 189998290\n", + "* cout(m1 @ (m2 @ m3)) ~ O(93 * 1003 * 97 + 997 * 93 * 97) = 18042000\n", + "\n", + "La seconde option est dix fois plus rapide." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "189998290 18042000\n" + ] + } + ], + "source": [ + "print(997 * 93 * 1003 + 997 * 1003 * 97, 93 * 1003 * 97 + 997 * 93 * 97)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.009560690999999987" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy\n", + "\n", + "m1 = numpy.random.randn(997, 93)\n", + "m2 = numpy.random.randn(93, 1003)\n", + "m3 = numpy.random.randn(1003, 97)\n", + "\n", + "mesure_temps_fonction(lambda: m1 @ m2 @ m3)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.009846866999999992" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: (m1 @ m2) @ m3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.001004321000000008" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: m1 @ (m2 @ m3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2 : Ecrire une fonction qui calcule le nombre d'operations dans une multiplication de deux matrices (2 points)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "185998326" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def n_ops(m1_shape, m2_shape):\n", + " return m1_shape[0] * m2_shape[1] * m1_shape[1] * 2\n", + "\n", + "n_ops(m1.shape, m2.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3 : Ecrire une fonction qui retourne le meilleur co\u00fbt d'une multiplication de deux matrices et la meilleure option (2 points)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(36084000, 1)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def n_ops_3(sh1, sh2, sh3):\n", + " m1_m2m3 = n_ops(sh1, (sh2[0], sh3[1])) + n_ops(sh2, sh3)\n", + " m1m2_m3 = n_ops(sh1, sh2) + n_ops((sh1[0], sh2[1]), sh3)\n", + " if m1m2_m3 < m1_m2m3:\n", + " return m1m2_m3, 2\n", + " else:\n", + " return m1_m2m3, 1\n", + " \n", + "n_ops_3(m1.shape, m2.shape, m3.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4 : Ecrire une fonction qui effectue le produit de trois matrices le plus rapidement possible (2 points)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy.testing import assert_almost_equal\n", + "\n", + "def produit3(m1, m2, m3):\n", + " cout, meilleur = n_ops_3(m1.shape, m2.shape, m3.shape)\n", + " if meilleur == 2:\n", + " return (m1 @ m2) @ m3\n", + " else:\n", + " return m1 @ (m2 @ m3)\n", + "\n", + "\n", + "assert_almost_equal(produit3(m1, m2, m3), m1 @ (m2 @ m3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5 : V\u00e9rifiez que vous retrouvez les m\u00eames r\u00e9sultats avec la fonction `mesure_temps` (2 points)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0011657070000000048" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: produit3(m1, m2, m3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On v\u00e9rifie que c'est \u00e9gal \u00e0 :" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0011010209999999887" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: m1 @ (m2 @ m3))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Ici, vous avez le choix entre faire les questions 6 \u00e0 9 ou les questions 9 et 10.**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q6 : Ecrire une fonction qui retourne le meilleur co\u00fbt d'une multiplication de 4 matrices et la meilleure option (3 points)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "m4 = numpy.random.randn(97, 20)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(11331640, 1)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def n_ops_4(sh1, sh2, sh3, sh4):\n", + " m1_m2m3m4 = n_ops(sh1, (sh2[0], sh4[1])) + n_ops_3(sh2, sh3, sh4)[0]\n", + " m1m2_m3m4 = n_ops(sh1, sh2) + n_ops((sh1[0], sh2[1]), (sh3[0], sh4[1])) + n_ops(sh3, sh4)\n", + " m1m2m3_m4 = n_ops_3(sh1, sh2, sh3)[0] + n_ops((sh1[0], sh3[1]), sh4)\n", + " m = min(m1_m2m3m4, m1m2_m3m4, m1m2m3_m4)\n", + " if m == m1_m2m3m4:\n", + " return m, 1\n", + " if m == m1m2_m3m4:\n", + " return m, 2\n", + " return m, 3\n", + "\n", + "n_ops_4(m1.shape, m2.shape, m3.shape, m4.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q7 : Ecrire une fonction qui effectue le produit de 4 matrices le plus rapidement possible (3 points)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.000988687999999982" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def produit4(m1, m2, m3, m4):\n", + " cout, meilleur = n_ops_4(m1.shape, m2.shape, m3.shape, m4.shape)\n", + " if meilleur == 1:\n", + " return m1 @ produit3(m2, m3, m4)\n", + " if meilleur == 2:\n", + " return (m1 @ m2) @ (m3 @ m4)\n", + " return produit3(m1, m2, m3) @ m4\n", + "\n", + "mesure_temps_fonction(lambda: produit4(m1, m2, m3, m4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q8 : V\u00e9rifiez que vous retrouvez les m\u00eames r\u00e9sultats avec la fonction mesure_temps et la matrice m4. (2 points)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.010446371000000027" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: ((m1 @ m2) @ m3) @ m4)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.008082993999999956" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: (m1 @ m2) @ (m3 @ m4))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0008713240000000155" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: m1 @ (m2 @ (m3 @ m4)))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0009054390000000013" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: produit4(m1, m2, m3, m4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q9 : On se penche sur le cas \u00e0 une multiplication de N matrices, combien y a-t-il de multiplications de 2 matrices ? (2 points)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Il y a en toujours *N-1*. On consid\u00e8re le produit $M_1 \\times... \\times M_n$. La multiplication commence toujours par une multiplication de deux matrices cons\u00e9cutives quelles qu'elles soient. On les suppose aux positions $(i, i+1)$. On note le r\u00e9sultat $MM_i$. Apr\u00e8s ce produit, il faudra faire : $(M_1 \\times ... \\times M_{i-1} \\times MM_i \\times M_{i+2} \\times ... \\times M_n$, soit une multiplication de $N-2$ matrices. On obtient le r\u00e9sultat par r\u00e9currence." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Ici s'arr\u00eate l'\u00e9nonc\u00e9 pour ceux qui ont choisit de r\u00e9pondre aux question 6 \u00e0 9.**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q10 : R\u00e9soudre l'optimisation de multiplication de N matrices.\n", + "\n", + "On l'envisage de fa\u00e7on r\u00e9cursive. La premi\u00e8re solution effectue plein de calculs en double mais nous verront comment la modifier." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(11331640, 1)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def n_ops_N(shapes):\n", + " if len(shapes) <= 1:\n", + " raise RuntimeError(\"Unexpected list of shapes: %r.\" % shapes)\n", + " if len(shapes) == 2:\n", + " return n_ops(*shapes), 1\n", + " if len(shapes) == 3:\n", + " return n_ops_3(*shapes)\n", + " best_cost = None\n", + " best_pos = None\n", + " for i in range(1, len(shapes)):\n", + " if i == 1:\n", + " cost = n_ops(shapes[0], (shapes[1][0], shapes[-1][1])) + n_ops_N(shapes[1:])[0]\n", + " best_cost = cost\n", + " best_pos = i\n", + " elif i == len(shapes)-1:\n", + " cost = n_ops_N(shapes[:-1])[0] + n_ops((shapes[0][0], shapes[-2][1]), shapes[-1])\n", + " if cost < best_cost:\n", + " best_cost = cost\n", + " best_pos = i\n", + " else:\n", + " cost = (n_ops_N(shapes[:i])[0] + n_ops_N(shapes[i:])[0] + \n", + " n_ops((shapes[0][0], shapes[i-1][1]), (shapes[i][0], shapes[-1][1])))\n", + " if cost < best_cost:\n", + " best_cost = cost\n", + " best_pos = i\n", + "\n", + " if best_pos is None:\n", + " raise RuntimeError(shapes)\n", + " return best_cost, best_pos\n", + "\n", + " \n", + "n_ops_N([m1.shape, m2.shape, m3.shape, m4.shape])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(11331640, 1)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n_ops_4(m1.shape, m2.shape, m3.shape, m4.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "def product_N(inputs):\n", + " if len(inputs) <= 1:\n", + " raise RuntimeError(\n", + " \"List inputs must contain at least two elements bot has %d.\" % len(inputs))\n", + " cost, pos = n_ops_N([i.shape for i in inputs])\n", + " if len(inputs) == 2:\n", + " return inputs[0] @ inputs[1]\n", + " if pos == 1:\n", + " right = product_N(inputs[1:])\n", + " return inputs[0] @ right\n", + " if pos == len(shapes) - 1:\n", + " left = product_N(inputs[:-1])\n", + " return left @ inputs[-1]\n", + " else:\n", + " left = product_N(inputs[:pos + 1])\n", + " right = product_N(inputs[pos + 1:])\n", + " return left @ right\n", + "\n", + "\n", + "assert_almost_equal(m1 @ m2 @ m3 @ m4, product_N([m1, m2, m3, m4]))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0009734980000000349" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: produit4(m1, m2, m3, m4))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0009873739999999031" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: product_N([m1, m2, m3, m4]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Ici s'arr\u00eate ce qui est attendu comme r\u00e9ponse \u00e0 la question 10.**\n", + "\n", + "**Les calculs en double...**\n", + "\n", + "On v\u00e9rifie en ajoutant une ligne pour afficher tous les appels \u00e0 `n_ops_N`." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n_ops_N([(997, 93), (93, 1003), (1003, 97), (97, 20), (20, 17)])\n", + "n_ops_N([(93, 1003), (1003, 97), (97, 20), (20, 17)])\n", + "n_ops_N([(1003, 97), (97, 20), (20, 17)])\n", + "n_ops_N([(93, 1003), (1003, 97)])\n", + "n_ops_N([(97, 20), (20, 17)])\n", + "n_ops_N([(93, 1003), (1003, 97), (97, 20)])\n", + "n_ops_N([(997, 93), (93, 1003)])\n", + "n_ops_N([(1003, 97), (97, 20), (20, 17)])\n", + "n_ops_N([(997, 93), (93, 1003), (1003, 97)])\n", + "n_ops_N([(97, 20), (20, 17)])\n", + "n_ops_N([(997, 93), (93, 1003), (1003, 97), (97, 20)])\n", + "n_ops_N([(93, 1003), (1003, 97), (97, 20)])\n", + "n_ops_N([(997, 93), (93, 1003)])\n", + "n_ops_N([(1003, 97), (97, 20)])\n", + "n_ops_N([(997, 93), (93, 1003), (1003, 97)])\n" + ] + }, + { + "data": { + "text/plain": [ + "(9697854, 1)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def n_ops_N(shapes, verbose=False):\n", + " if verbose:\n", + " print(\"n_ops_N(%r)\" % shapes)\n", + " if len(shapes) <= 1:\n", + " raise RuntimeError(\"Unexpected list of shapes: %r.\" % shapes)\n", + " if len(shapes) == 2:\n", + " return n_ops(*shapes), 1\n", + " if len(shapes) == 3:\n", + " return n_ops_3(*shapes)\n", + " best_cost = None\n", + " best_pos = None\n", + " for i in range(1, len(shapes)):\n", + " if i == 1:\n", + " cost = (n_ops(shapes[0], (shapes[1][0], shapes[-1][1])) + \n", + " n_ops_N(shapes[1:], verbose=verbose)[0])\n", + " best_cost = cost\n", + " best_pos = i\n", + " elif i == len(shapes)-1:\n", + " cost = (n_ops_N(shapes[:-1], verbose=verbose)[0] + \n", + " n_ops((shapes[0][0], shapes[-2][1]), shapes[-1]))\n", + " if cost < best_cost:\n", + " best_cost = cost\n", + " best_pos = i\n", + " else:\n", + " cost = (n_ops_N(shapes[:i], verbose=verbose)[0] + \n", + " n_ops_N(shapes[i:], verbose=verbose)[0] + \n", + " n_ops((shapes[0][0], shapes[i-1][1]), (shapes[i][0], shapes[-1][1])))\n", + " if cost < best_cost:\n", + " best_cost = cost\n", + " best_pos = i\n", + "\n", + " if best_pos is None:\n", + " raise RuntimeError(shapes)\n", + " return best_cost, best_pos\n", + "\n", + "\n", + "m5 = numpy.random.randn(20, 17)\n", + "\n", + "n_ops_N([m1.shape, m2.shape, m3.shape, m4.shape, m5.shape], verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On voit deux appels identiques `n_ops_N([(97, 20), (20, 17)])` et `n_ops_N([(93, 1003), (1003, 97), (97, 20)])`. Ce n'est pas trop probl\u00e9matique pour un petit nombre de matrices mais cela pourrait le devenir si ce m\u00eame algorithme \u00e9tait appliqu\u00e9e \u00e0 autre chose.\n", + "\n", + "Plut\u00f4t que de r\u00e9\u00e9crire l'algorithme diff\u00e9remment, on se propose d'ajouter un param\u00e8tre pour garder la trace des r\u00e9sultats d\u00e9j\u00e0 retourn\u00e9s." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n_ops_N([(997, 93), (93, 1003), (1003, 97), (97, 20), (20, 17)])\n", + "n_ops_N([(93, 1003), (1003, 97), (97, 20), (20, 17)])\n", + "n_ops_N([(1003, 97), (97, 20), (20, 17)])\n", + "n_ops_N([(93, 1003), (1003, 97)])\n", + "n_ops_N([(97, 20), (20, 17)])\n", + "n_ops_N([(93, 1003), (1003, 97), (97, 20)])\n", + "n_ops_N([(997, 93), (93, 1003)])\n", + "n_ops_N([(997, 93), (93, 1003), (1003, 97)])\n", + "n_ops_N([(997, 93), (93, 1003), (1003, 97), (97, 20)])\n", + "n_ops_N([(1003, 97), (97, 20)])\n" + ] + }, + { + "data": { + "text/plain": [ + "(9697854, 1)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def n_ops_N_opt(shapes, cache=None, verbose=False):\n", + " if cache is None:\n", + " cache = {}\n", + " key = tuple(shapes)\n", + " if key in cache:\n", + " # On s'arr\u00eate, d\u00e9j\u00e0 calcul\u00e9.\n", + " return cache[key]\n", + "\n", + " if verbose:\n", + " print(\"n_ops_N(%r)\" % shapes)\n", + " if len(shapes) <= 1:\n", + " raise RuntimeError(\"Unexpected list of shapes: %r.\" % shapes)\n", + " \n", + " if len(shapes) == 2:\n", + " res = n_ops(*shapes), 1\n", + " cache[key] = res\n", + " return res\n", + " \n", + " if len(shapes) == 3:\n", + " res = n_ops_3(*shapes)\n", + " cache[key] = res\n", + " return res\n", + " \n", + " best_cost = None\n", + " best_pos = None\n", + " for i in range(1, len(shapes)):\n", + " if i == 1:\n", + " cost = (n_ops(shapes[0], (shapes[1][0], shapes[-1][1])) + \n", + " n_ops_N_opt(shapes[1:], verbose=verbose, cache=cache)[0])\n", + " best_cost = cost\n", + " best_pos = i\n", + " elif i == len(shapes)-1:\n", + " cost = (n_ops_N_opt(shapes[:-1], verbose=verbose, cache=cache)[0] + \n", + " n_ops((shapes[0][0], shapes[-2][1]), shapes[-1]))\n", + " if cost < best_cost:\n", + " best_cost = cost\n", + " best_pos = i\n", + " else:\n", + " cost = (n_ops_N_opt(shapes[:i], verbose=verbose, cache=cache)[0] + \n", + " n_ops_N_opt(shapes[i:], verbose=verbose, cache=cache)[0] + \n", + " n_ops((shapes[0][0], shapes[i-1][1]), (shapes[i][0], shapes[-1][1])))\n", + " if cost < best_cost:\n", + " best_cost = cost\n", + " best_pos = i\n", + "\n", + " if best_pos is None:\n", + " raise RuntimeError(shapes)\n", + " \n", + " res = best_cost, best_pos\n", + " cache[key] = res\n", + " return res\n", + "\n", + "\n", + "n_ops_N_opt([m1.shape, m2.shape, m3.shape, m4.shape, m5.shape], verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La liste est moins longue et tous les appels sont uniques. On met \u00e0 jour la fonction `product_N`." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "def product_N_opt(inputs, cache=None):\n", + " if len(inputs) <= 1:\n", + " raise RuntimeError(\n", + " \"List inputs must contain at least two elements bot has %d.\" % len(inputs))\n", + " cost, pos = n_ops_N_opt([i.shape for i in inputs], cache=cache)\n", + " if len(inputs) == 2:\n", + " return inputs[0] @ inputs[1]\n", + " if pos == 1:\n", + " right = product_N_opt(inputs[1:], cache=cache)\n", + " return inputs[0] @ right\n", + " if pos == len(shapes) - 1:\n", + " left = product_N_opt(inputs[:-1], cache=cache)\n", + " return left @ inputs[-1]\n", + " else:\n", + " left = product_N_opt(inputs[:pos + 1], cache=cache)\n", + " right = product_N_opt(inputs[pos + 1:], cache=cache)\n", + " return left @ right\n", + "\n", + "\n", + "assert_almost_equal(m1 @ m2 @ m3 @ m4, product_N([m1, m2, m3, m4]))" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0010903469999999516" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: product_N([m1, m2, m3, m4, m5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0009383259999999893" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: product_N_opt([m1, m2, m3, m4, m5]))" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.01018160299999991" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_temps_fonction(lambda: m1 @ m2 @ m3 @ m4 @ m5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tout fonctionne." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Remarques lors de la correction \n", + "\n", + "Il y a eu peu d'erreurs lors des premi\u00e8res questions. Par la suite des erreurs fr\u00e9quentes sont apparues.\n", + "\n", + "Il ne fallait pas utiliser de produits matriciel dans les fonctions de co\u00fbts. L'int\u00e9r\u00eat est d'utiliser ces fonctions pour d\u00e9cider du calcul \u00e0 faire, pour d\u00e9terminer le calcul optimal. Et le calcu de ce co\u00fbt doit \u00eatre n\u00e9gligeable par rapport au co\u00fbt matriciel lui-m\u00eame sinon l'int\u00e9r\u00eat en est fortement r\u00e9duit.\n", + "\n", + "Le produit de 4 matrices ne pouvait pas faire intervenir `m1 @ m2 @ m3` car cette notation ne pr\u00e9cise pas explicitement l'ordre \u00e0 suivre.\n", + "\n", + "Enfin, les mesures de temps \u00e9taient destin\u00e9es \u00e0 rep\u00e9rer les erreurs de code \u00e9ventuelles. Si la mesure donne l'inverse ce qui est attendu, c'est qu'il y a sans doute une erreur de code. De m\u00eame, si la mesure de temps dure tr\u00e8s longtemps, c'est aussi une indication que le code est probablement erron\u00e9." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "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.9.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2022_rattrapage.ipynb b/_doc/practice/exams/td_note_2022_rattrapage.ipynb new file mode 100644 index 00000000..a6ff17f4 --- /dev/null +++ b/_doc/practice/exams/td_note_2022_rattrapage.ipynb @@ -0,0 +1,491 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A - Enonc\u00e9 15 novembre 2021 - rattrapage\n", + "\n", + "Correction de l'examen du 15 novembre 2021." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 1 : optimisation de volume\n", + "\n", + "On cherche \u00e0 expliquer la forme des briques de lait. On rappelle quelques formules :\n", + "\n", + "* aire d'une surface : S = longueur x largeur\n", + "* volume d'une brique : V = longueur x largeur x hauteur" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q1 : \u00e9crire une fonction qui calcule l'aire d'une surface" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def surface(longueur, largeur):\n", + " return longueur * largeur\n", + "\n", + "surface(3, 4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2 : \u00e9crire une fonction qui calcule le volume d'une brique" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3, 4, 5)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def volume(longueur, largeur, hauteur):\n", + " return longueur, largeur, hauteur\n", + "\n", + "volume(3, 4, 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On veut conna\u00eetre les dimensions de la brique id\u00e9ale d'un litre : son volume est 1 et sa surface (la somme des surfaces de toutes les faces) est minimale. Ceci afin de minimiser l'utilisation de mati\u00e8res premi\u00e8res." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3 : \u00e9crire une fonction qui retourne la somme des surfaces des faces d'une brique" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "94" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def surface_brique(longueur, largeur, hauteur):\n", + " return (surface(longueur, largeur) + \n", + " surface(largeur, hauteur) + \n", + " surface(hauteur, longueur)) * 2\n", + "\n", + "surface_brique(3, 4, 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4 : la brique optimale\n", + "\n", + "On consid\u00e8re l'ensemble `[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.]`. On fait varier plusieurs dimensions dans cet ensemble, on ne garde que celle dont le volume est 1 et la surface minimale. Quelles sont les dimensions optimales ?" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(6.0, (1.0, 1.0, 1.0))" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy\n", + "\n", + "def brique_optimale(ensemble):\n", + " meilleur = None\n", + " \n", + " for longueur in ensemble:\n", + " for largeur in ensemble:\n", + " hauteur = 1 / (longueur * largeur)\n", + " surf = surface_brique(longueur, largeur, hauteur)\n", + " if meilleur is None or surf < meilleur:\n", + " meilleur = surf\n", + " solution = longueur, largeur, hauteur\n", + " return meilleur, solution\n", + "\n", + "\n", + "ensemble = (numpy.arange(20) + 1) / 10\n", + "brique_optimale(ensemble)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5 : on inclut la surface n\u00e9cessaire pour coller les extremit\u00e9s\n", + "\n", + "Pour fermer une brique, il faut pouvoir coller les faces entre elles. La surface additionnelle est \u00e9gale \u00e0 une fois la plus petite des faces + la surface d'un carr\u00e9 de c\u00f4t\u00e9 la plus petite dimension. Modifier la fonction pr\u00e9c\u00e9dente pour en tenir compte." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(7.4471428571428575, (1.0, 0.7, 1.4285714285714286))" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def brique_optimale_surplus(ensemble):\n", + " meilleur = None\n", + " \n", + " for longueur in ensemble:\n", + " for largeur in ensemble:\n", + " hauteur = 1 / (longueur * largeur)\n", + " surf = (surface_brique(longueur, largeur, hauteur) + \n", + " surface(longueur, largeur) + largeur ** 2)\n", + " if meilleur is None or surf < meilleur:\n", + " meilleur = surf\n", + " solution = longueur, largeur, hauteur\n", + " return meilleur, solution\n", + "\n", + "\n", + "ensemble = (numpy.arange(20) + 1) / 10\n", + "brique_optimale_surplus(ensemble)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans cette \u00e9criture, le programme suppose implicitement que `largeur` est le plus petit c\u00f4t\u00e9. Ce n'est pas toujours le cas. Quand ce n'est pas le cas, on peut v\u00e9rifier en permutant `longueur` et `largeur`, la surface est plus grande. L'optimisation ne choisira pas cette solution. Si ce n'\u00e9tait pas le cas, il suffirait d'exclure tous les cas o\u00f9 `largeur > longueur`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q6 : une bouteille de deux litres deux fois plus large\n", + "\n", + "Le producteur souhaite \u00e9couler la moiti\u00e9 de sa marchandise avec des bouteilles de lait de deux litres, aussi hautes et longues mais deux fois plus large pour pouvoir les stocker facilement. La surface de cette bouteille est celle-ci :\n", + "\n", + "`surface_brique2(longueur, largeur, hauteur) = surface_brique(longueur, largeur, hauteur) - 2 * surface(largeur, hauteur)`.\n", + "\n", + "Quelles sont les dimensions optimales ?" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(6.6938095238095245, (0.8, 0.7, 1.7857142857142858))" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def brique_optimale_surplus_deux_litres(ensemble):\n", + " meilleur = None\n", + " \n", + " for longueur in ensemble:\n", + " for largeur in ensemble:\n", + " if largeur > longueur:\n", + " continue\n", + " hauteur = 1 / (longueur * largeur)\n", + " surf1 = (surface_brique(longueur, largeur, hauteur) + \n", + " surface(longueur, largeur) + largeur ** 2)\n", + " surf2 = surf1 - surface(largeur, hauteur) * 2\n", + " surf = surf1 * 2 / 3 + surf2 / 3 # donc autant de litres de lait dans chacun des contenants\n", + " if meilleur is None or surf < meilleur:\n", + " meilleur = surf\n", + " solution = longueur, largeur, hauteur\n", + " return meilleur, solution\n", + "\n", + "\n", + "ensemble = (numpy.arange(20) + 1) / 10\n", + "brique_optimale_surplus_deux_litres(ensemble)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q7 : petite brique en bleue, grosse brique en rouge\n", + "\n", + "Le producteur se sert d'une rang\u00e9e de longueur de 10 briques de 1 litre dans laquelle il ins\u00e8re des briques de deux litres pour envoyer des messages cod\u00e9s (en binaire).\n", + "\n", + "Example de message : `A A B B A B B A B B` A = une bouteille de 1 litre, B = moiti\u00e9 d'une bouteille de deux litres.\n", + "\n", + "Combien y a-t-il de possibilit\u00e9s dans une rang\u00e9e d'une longueur de 10 briques de 1 litre." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def messages(n):\n", + " possibilites = [1 for i in range(n + 1)]\n", + " for i in range(2, n + 1):\n", + " possibilites[i] = possibilites[i-1] + possibilites[i-2]\n", + " return possibilites\n", + "\n", + "messages(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "C'est un probl\u00e8me assez classique, le nombre de possibilit\u00e9s pour n=10 est \u00e9gale au nombre de possibilit\u00e9s pour n=8 et une bouteille de 2 litres + le nombre de possibilit\u00e9s pour n=9 et une bouteille de 1 litre." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "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.9.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2022_rattrapage2.ipynb b/_doc/practice/exams/td_note_2022_rattrapage2.ipynb new file mode 100644 index 00000000..4b1d413d --- /dev/null +++ b/_doc/practice/exams/td_note_2022_rattrapage2.ipynb @@ -0,0 +1,515 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fed67b73", + "metadata": {}, + "source": [ + "# 1A - Enonc\u00e9 3 mars 2022- rattrapage\n", + "\n", + "Correction de l'examen du 3 mars 2022. L'objectif est de construire un arbre de fa\u00e7on algorithmique." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "5c7c88b5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "id": "4d6219c6", + "metadata": {}, + "source": [ + "## Dessin d'une liste de segments" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "423979d4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "def draw(segments, L=1):\n", + " fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", + " maxxy = 0\n", + " for seg in segments:\n", + " ax.plot([seg['x1'], seg['x2']], [seg['y1'], seg['y2']], 'b-', lw=seg['E'] * 10000)\n", + " ax.set_xlim([0, 2 * L])\n", + " ax.set_ylim([-L, L])\n", + " return ax\n", + "\n", + "draw([{'x1': 0, 'y1': 0, 'x2': 1.0, 'y2': 0.0, 'E': 0.001, 'angle': 0}]);" + ] + }, + { + "cell_type": "markdown", + "id": "aa56697d", + "metadata": {}, + "source": [ + "## Distance d'un segment" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8cde6f66", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def distance(seg):\n", + " x1, x2, y1, y2 = seg['x1'], seg['x2'], seg['y1'], seg['y2']\n", + " return ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5\n", + "\n", + "distance({'x1': 0, 'y1': 0, 'x2': 1.0, 'y2': 0.0, 'E': 0.001, 'angle': 0})" + ] + }, + { + "cell_type": "markdown", + "id": "a10ca2b8", + "metadata": {}, + "source": [ + "## Calcul du segment suivant" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f65183df", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'x1': 0, 'y1': 0, 'x2': 1.0, 'y2': 0.0, 'E': 0.001, 'angle': 0}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from math import cos, sin, pi\n", + "\n", + "\n", + "def segment(x=0, y=0, angle=0, L=1, E=0.001):\n", + " x2 = x + cos(angle) * L\n", + " y2 = y + sin(angle) * L\n", + " return dict(x1=x, y1=y, x2=x2, y2=y2, E=E, angle=angle)\n", + "\n", + "segment()" + ] + }, + { + "cell_type": "markdown", + "id": "68f1a950", + "metadata": {}, + "source": [ + "## Calcul des trois segments suivants" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b94ef6c2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def tree3(seg, angle=pi/3, re=0.33, rl=0.66):\n", + " x, y = seg['x2'], seg['y2']\n", + " e = seg['E'] * re\n", + " le = distance(seg) * rl\n", + " a = seg['angle']\n", + " segments = [\n", + " segment(x, y, angle=a-angle, L=le, E=e),\n", + " segment(x, y, angle=a, L=le, E=e),\n", + " segment(x, y, angle=a+angle, L=le, E=e),\n", + " ]\n", + " return segments\n", + "\n", + "premier = segment()\n", + "segs = [premier] + tree3(premier, 1)\n", + "draw(segs);" + ] + }, + { + "cell_type": "markdown", + "id": "ace78731", + "metadata": {}, + "source": [ + "## Construction de tous les niveaux de l'arbre" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d21515d6", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def tree_recursive(level, seg, angle=pi/6, re=0.6, rl=0.95):\n", + " all_segs = [seg]\n", + " iter_segs = [seg]\n", + " for i in range(level):\n", + " new_segs = []\n", + " for seg in iter_segs:\n", + " new_segs.extend(tree3(seg, angle=angle, re=re, rl=rl))\n", + " all_segs.extend(new_segs)\n", + " iter_segs = new_segs\n", + " return all_segs\n", + "\n", + "premier = segment()\n", + "segs = tree_recursive(3, premier)\n", + "draw(segs, L=3);" + ] + }, + { + "cell_type": "markdown", + "id": "ee2945c8", + "metadata": {}, + "source": [ + "## Construction de trois segments al\u00e9atoires" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bea39e8a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAARsAAAD8CAYAAABHGwCvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAYg0lEQVR4nO3deXRV9bnG8e8rEFBEAcMSxYJ6tVccUSKtyy5bLVp0ucDbegU7KA6gFoeKIiAqCkhFoDhWoThhLdJqtXiLlwsOtV0Va1QqKA6IrYJcRVDUMgl57x+/fe4+iQkkOSd7n+H5rJWV89tD8u6EPOyzp9fcHRGRlrZT2gWISHlQ2IhIIhQ2IpIIhY2IJEJhIyKJUNiISCLyEjZmdq+ZfWRmSxuYb2Z2m5ktN7NXzeyorHlnm9nb0cfZ+ahHRApPvvZs7gf6bWf+ycCB0cdQ4C4AM+sMjAW+AfQBxppZpzzVJCIFJC9h4+7PAeu2s8gAYJYHi4COZrYX8D1ggbuvc/dPgAVsP7REpEi1Tuj7dAPezxqvjKY1NP0rzGwoYa+I9u3b9z7ooINaplIRadBLL730sbt3ac66SYVNztx9BjADoKqqyqurq1OuSKT8mNk/m7tuUmejVgFfyxrvE01raLqIlJikwmYucFZ0VuqbwHp3Xw3MB04ys07RgeGTomkiUmLy8jbKzGYD3wEqzWwl4QxTGwB3vxuYB5wCLAc2AOdE89aZ2XjgxehLjXP37R1oFpEilZewcfczdzDfgWENzLsXuDcfdYhI4dIVxCKSCIWNiCRCYSMiiVDYiEgiFDYikgiFjYgkQmEjIolQ2IhIIhQ2IpIIhY2IJEJhIyKJUNiISCIUNiKSCIWNiCRCYSMiiVDYiEgiFDYikgiFjYgkIl/td/uZ2ZtRe91R9cyfZmaLo4+3zOzTrHnbsubNzUc9IlJ4cn4GsZm1Au4ETiQ0mXvRzOa6++uZZdz98qzlLwGOzPoSG929V651iEhhy8eeTR9gubuvcPctwMOEdrsNOROYnYfvKyJFJB9h05QWuj2A/YCnsya3M7NqM1tkZqfloR4RKUBJt98dBDzi7tuypvVw91Vmtj/wtJktcfd36q6Y3eu7e/fuyVQrInmTjz2bprTQHUSdt1Duvir6vAJ4ltrHc7KXm+HuVe5e1aVLs/qai0iK8hE2LwIHmtl+ZlZBCJSvnFUys4OATsDzWdM6mVnb6HUlcCzwet11RaT45fw2yt23mtnFhB7drYB73f01MxsHVLt7JngGAQ9H3TEzegLTzayGEHw3ZZ/FEpHSYbX/9otDVVWVV1dXp12GSNkxs5fcvao56+oKYhFJhMJGRBKhsBGRRChsRCQRChspe8uWwQcfpF1F6VPYSFlzh3PPhQMPhOuug88/T7ui0pX07QoiBeXRR2HRovB6/HioqYEJE9KtqVRpz0bK1pYtMHp0PO7YEYYPT62ckqewkbI1fTosXx6Pr7kGOndOr55Sp7CRsrR+PYwbF4979IBhw9KrpxwobKQsTZoEH38cjydOhHbt0qunHChspOysXAnTpsXjo46CQYPSq6dcKGyk7Fx7LWzaFI+nTIGd9JfQ4vQjlrLy6qvwwAPx+JRT4Pjj06unnChspKxcdVW4kA/C3sykSenWU04UNlI2FiyA+fPj8TnnwKGHpldPuVHYSFmoqQl7NRk771z71Le0PIWNlIWHHoLFi+PxFVfA3nunVk5ZUthIydu4EcaMicddutTey5FkJNXre7CZrcnq6X1+1ryzzezt6OPsfNQjku322+H9rDaK118PHTqkVk7ZSqTXd2SOu19cZ93OwFigCnDgpWjdT3KtSwRg7dpwdXDG178OQ4akV085S6PXd7bvAQvcfV0UMAuAfnmoSQQIj4tYvz4e33QTtGmTXj3lLMle3z8ws1fN7BEzy3TQbEqf8KFRT/DqNWvW5KFsKXXvvAN33hmPjz0WTjsttXLKXlIHiJ8A9nX3wwl7Lw/sYPmvUPtdaaoxY+DLL+Px5Mlgll495S6RXt/uvtbdN0fDmUDvxq4r0hx/+xvMmROPTz8djjkmvXokoV7fZrZX1rA/sCx6PR84Ker53Qk4KZom0mzuMGJEPG7duvZBYklHUr2+LzWz/sBWYB0wOFp3nZmNJwQWwDh3X5drTVLenngCnnsuHl90UXiguaRLvb6lpGzdCocdBm+8Eca77RYe/anDfPmhXt8ikXvuiYMGYNQoBU2hUNhIyfjiCxg7Nh536waXXZZePVKbwkZKxpQp8OGH8XjCBNhll/TqkdoUNlISVq8OYZNx2GHwk5+kV498lcJGSsL118O//hWPJ0+GVq1SK0fqobCRordsGcycGY/79oWTTkqvHqmfwkaK3siR4Ul8EG5HuPlm3ZZQiBQ2UtT+9KdwEV/Gj38MRx6ZXj3SMIWNFK2amtq3JbRtG85ASWFS2EjR+t3v4MUX4/Fll0H37unVI9unsJGitHkzjB4djzt3rj2WwqOwkaJ0113w7rvx+NproWPH1MqRRlDYSNH59FMYPz4e778//PSnqZUjjaSwkaLz85/DuqwHkUycCBUV6dUjjaOwkaLyz3/CrbfG46OPhjPOSK8eaTyFjRSVa68NB4czpkzRBXzFQmEjReOVV+DXv47H/fvDccelV480jcJGikLmucKZB0u2ahV6QEnxSKr97nAzez3qG/WUmfXImrctqy3v3LrrigDMnw9PPRWPzz8fevZMrx5puqTa774CVLn7BjO7CLgZGBjN2+juvXKtQ0rXtm1w1VXxuH378EgJKS6JtN9192fcfUM0XEToDyXSKLNmwZIl8XjECOjaNb16pHmSbL+bcR7wZNa4XdRWd5GZndbQSmq/W542bAhnoDK6doUrrkivHmm+nN9GNYWZ/RioAr6dNbmHu68ys/2Bp81sibu/U3ddd58BzIDQyiWRgiV1t9wCq7J6pN5wA+y6a2rlSA4Sab8LYGZ9gTFA/6xWvLj7qujzCuBZQE8jEQDWrKl9xqlnTzj33PTqkdwk1X73SGA6IWg+ypreyczaRq8rgWOB7APLUsbGjYPPP4/HkyaFVrpSnJJqvzsZ2BX4nYXLPd9z9/5AT2C6mdUQgu+mOmexpEy9/TbcfXc8Pu44OPXU9OqR3OXl/wl3nwfMqzPtuqzXfRtY76/AYfmoQUrL6NGhlW7G5Mm6LaHY6QpiKTjPPw+PPhqPBw6EPn3Sq0fyQ2EjBcUdrrwyHrdpEx4hIcVPYSMF5fHH4a9/jcfDhoWHY0nxU9hIwfjyy9ADKmP33eGaa9KrR/JLYSMF41e/CmehMq6+GvbYI716JL8UNlIQPvus9s2V3bvDpZemVo60AIWNFITJk8MVwxkTJkC7dunVI/mnsJHUrVoFU6fG41694Ec/Sq0caSEKG0nd2LGwcWM8njwZdtK/zJKjX6mkaulSuO++eNyvH/St93pzKXYKG0nVyJFQUxNem4WbLaU0KWwkNU8/DfOy7qgbPBgOPzy1cqSFKWwkFTU14fGeGTvvHB4pIaVLYSOpmD0bXn45Hl9+OeyjJ1OXNIWNJG7TJhgzJh5XVtbuniClSWEjibvjjtCzO2Ps2HAflJQ2cy++Z4ebVTlUp12G5MnmzVBRkXYV0hhm9pK7VzVnXT3RVVJXKkHjHu5c37wZtmwJH5nXTZ22o+X79IGf/SztLW6avISNmfUDbiU8g3imu99UZ35bYBbQG1gLDHT3f0TzRhN6SW0DLnX3+fmoSUpP5o851z/UlgqALVuS+1ls2VKGYdPI9rvnAZ+4+wFmNgiYBAw0s4MJ3RgOAfYGFprZ1919W651SfE4/vjG/0FLsHnzjpcpNPnYs/n/9rsAZpZpv5sdNgOA66PXjwB3WGizMAB4OOoj9a6ZLY++3vN5qEuKxLPPpl1B4WjbNrytrKiIX9f9XFEBhxVhm4B8hE197Xe/0dAyUeuX9cAe0fRFddatt3WvmQ0FhoZR7zyULeWooT/kxk7L5/J157VuXdodJIrmAHF2+91wNkpKxaBBuf2RNnb5Nm1K+4+50OUjbBrTfjezzEozaw3sTjhQ3KjWvVLaZs9OuwJJQiLtd6Px2dHr04GnPVzgMxcYZGZtzWw/4EDgb3moSUQKTM5h4+5bgUz73WXAbzPtd82sf7TYPcAe0QHg4cCoaN3XgN8SDib/NzBMZ6LKz8KFaVcgSSjKK4irqqq8ulpXEBerN96AI46IT2Xvvz8sWQK77JJuXbJjuVxBrHujJHEHHVS7H9SKFbU7K0hpUthIKkaOhEMOicdTp9Z+5ISUHoWNpKKiIjSly5yKrqmB88+HrVvTrUtajsJGUnPMMaGXd8Yrr8C0aenVIy1LYSOpmjix9hP6xo6Fd95Jrx5pOQobSVWHDnDXXfF440a44IJwh7eUFoWNpO7UU2HgwHj81FMwa1Z69UjLUNhIQbj1VujUKR4PHw4ffZRePZJ/ChspCHvuWbvf97p1xfdwKNk+hY0UjMGD4YQT4vHs2bWb2ElxU9hIwTCD6dOhXbt42oUXwuefp1eT5I/CRgrKAQfADTfE4/ffr31rgxQvhY0UnOHDoVeveHz77fDCC6mVI3misJGC07o1zJwJO0X/Ot3DrQx64HlxU9hIQerdO/T/zli6FG6+Ob16JHcKGylYN9wA++0Xj8ePD8/CkeKksJGC1b59ODuVsWULDB0a7hCX4qOwkYJ24olw1lnx+M9/DsdzpPjkFDZm1tnMFpjZ29HnTvUs08vMnjez18zsVTMbmDXvfjN718wWRx+9cqlHStPUqVBZGY9HjIAPPkivHmmeXPdsRgFPufuBwFPRuK4NwFnufgjQD7jFzDpmzR/h7r2ij8U51iMlqLIy3DuV8dlncMkl6dUjzZNr2AwAHohePwCcVncBd3/L3d+OXn8AfAR0yfH7Spk580w4+eR4/Pvfw2OPpVePNF2uYbOnu6+OXv8vsOf2FjazPkAFkP14pBujt1fTzKztdtYdambVZla9Zs2aHMuWYmMWnnvTvn08bdgw+PTT1EqSJtph2JjZQjNbWs/HgOzloqZzDT7yyMz2Ah4EznH3zPmE0cBBwNFAZ2BkQ+u7+wx3r3L3qi5dtGNUjnr0gBtvjMerV8Oo+t64S0HaYdi4e193P7Sejz8AH0YhkgmTep9AYma7AX8Exrj7oqyvvdqDzcB9QJ98bJSUrosvhj5Z/0qmTw9nqKTw5fo2Krut7tnAH+ouELXkfQyY5e6P1JmXCSojHO9ZmmM9UuJatQpdGVpndakfMgQ2bUqvJmmcXMPmJuBEM3sb6BuNMbMqM8tcDXEGcBwwuJ5T3A+Z2RJgCVAJTMixHikDhx8OV10Vj998Mzw4XQqb2u9KUdq0KbTwfeutMG7dOrSCOfTQdOsqdWq/K2WnXTuYMSMeb90a7gzfti29mmT7FDZStL797XC8JuOFF+CXv0yvHtk+hY0UtZtvhq5d4/HVV8N776VXjzRMYSNFrWNHuOOOePzFF3DRRWpyV4gUNlL0vv99GJB1iem8eTBnTnr1SP0UNlL0zODOO2G33eJpl14Ka9emV5N8lcJGSkK3bjBpUjxeswauvDK9euSrFDZSMoYOhW99Kx7ffz8sXJhaOVKHwkZKxk47hWtvKiriaRdcABs2pFeTxBQ2UlJ69oQxY+LxihW1m95JehQ2UnJGjYJDDonHU6eGWxkkXQobKTkVFeHOcLMw3rYt3MqwdWu6dZU7hY2UpGOOCU/yy3j5ZbjlltTKERQ2UsImToR99onH110XjuFIOhQ2UrI6dAjPLc7YuDGcndKtDOlQ2EhJO/VUOOOMeLxwITz4YHr1lDOFjZS8226DTlntEy+/HD6q92nZ0pIUNlLy9twTpkyJx+vWhcCRZLV4+91ouW1Zzx+emzV9PzN7wcyWm9mc6OHoInl3zjlwwgnx+De/gSefTK+ecpRE+12AjVktdvtnTZ8ETHP3A4BPgPNyrEekXmah7Uu7dvG0Cy8Mz7+RZLR4+92GRO1bTgAy7V2atL5IUx1wAFx/fTx+7z245prUyik7SbXfbRe1zl1kZqdF0/YAPnX3zHWdK4FuDX0jtd+VfBg+HHr1ise33RaeXSwtL6n2uz2i9g8/BG4xs39raqFqvyv50KYNzJwZ7hCHcM3NkCGwZUu6dZWDRNrvuvuq6PMK4FngSGAt0NHMMr0N9wFW5bxFIjvQu3fts1FLlsDkyenVUy6SaL/byczaRq8rgWOB16M9oWeA07e3vkhLuOEG2HffeDx+fOisKS0nifa7PYFqM/s7IVxucvfXo3kjgeFmtpxwDOeeHOsRaZT27cPZqYzNm8OT/mpq0qup1Kn9rpS1s86qffvCjBm1G99JbWq/K9JMv/gFVFbG4xEjYPXqhpeX5lPYSFmrrKz9nJv16+GSS1Irp6QpbKTs/fCH0K9fPH70UXj88dTKKVkKGyl7ZuG5N7vsEk8bNizs5Uj+KGxECKfBb7wxHn/wQXhwuuSPwkYkcsklcPTR8fjuu+Evf0mvnlKjsBGJtGoVujK0bh1PGzIkXIMjuVPYiGQ54gi46qp43KFD6BsuuVPYiNRx7bVw5JEwbRo8/3ztDg3SfK13vIhIeWnXDqqr4zvDJT/04xSph4Im//QjFZFEKGxEJBEKGxFJhMJGRBKhsBGRRChsRCQRChsRSUSLt981s+OzWu8uNrNNmd5RZna/mb2bNa9XLvWISOFq8fa77v5MpvUuoQPmBuB/shYZkdWad3GO9YhIgUq6/e7pwJPuviHH7ysiRSap9rsZg4DZdabdaGavmtm0TH8pESk9O7wR08wWAl3rmTUme+DubmYN9oWJOmYeBszPmjyaEFIVwAxCH6lxDaw/FBgK0L179x2VLSIFZodh4+59G5pnZh+a2V7uvnp77XcjZwCPufuXWV87s1e02czuA67cTh0zCIFEVVVV8TW7EilzLd5+N8uZ1HkLldUn3AjHe5bmWI+IFKgk2u9iZvsCXwP+VGf9h8xsCbAEqAQm5FiPiBSonB6e5e5rge/WM70aOD9r/A+gWz3LnZDL9xeR4qEriEUkEQobEUmEwkZEEqGwEZFEKGxEJBEKGxFJhMJGRBKhsBGRRChsRCQRChsRSYTCRkQSobARkUQobEQkEQobEUmEwkZEEqGwEZFEKGxEJBEKGxFJhMJGRBKRa6/v/zSz18ysxsyqtrNcPzN708yWm9morOn7mdkL0fQ5ZlaRSz0iUrhy3bNZCnwfeK6hBcysFXAncDJwMHCmmR0czZ4ETHP3A4BPgPNyrEdEClROYePuy9z9zR0s1gdY7u4r3H0L8DAwIOoVdQLwSLRcY3qFi0iRyqmVSyN1A97PGq8EvgHsAXzq7luzpn+l3UtGdvtdQgfNUm5oVwl8nHYRLaSUtw1Kf/v+vbkr5tTr29231wEzr7Lb75pZtbs3eIyo2JXy9pXytkF5bF9z182p13cjrSJ0w8zYJ5q2FuhoZq2jvZvMdBEpQUmc+n4RODA681QBDALmursDzwCnR8vtqFe4iBSxXE99/4eZrQSOAf5oZvOj6Xub2TyAaK/lYmA+sAz4rbu/Fn2JkcBwM1tOOIZzTyO/9Yxc6i4Cpbx9pbxtoO1rkIUdDBGRlqUriEUkEQobEUlEQYdNQ7c5ZM1vG93msDy67WHfFMpslkZs22AzW2Nmi6OP89Oos7nM7F4z+6ih66EsuC3a/lfN7Kika2yuRmzbd8xsfdbv7rqka8yFmX3NzJ4xs9ej25Euq2eZpv/+3L0gP4BWwDvA/kAF8Hfg4DrL/BS4O3o9CJiTdt153LbBwB1p15rDNh4HHAUsbWD+KcCTgAHfBF5Iu+Y8btt3gP9Ku84ctm8v4KjodQfgrXr+fTb591fIezb13uZQZ5kBhNscINz28N3oNohC15htK2ru/hywbjuLDABmebCIcM3VXslUl5tGbFtRc/fV7v5y9Ppzwlnkulf3N/n3V8hhU99tDnU3+P+X8XCKfT3hFHqha8y2Afwg2kV9xMy+Vs/8YtbYn0GxOsbM/m5mT5rZIWkX01zRoYkjgRfqzGry76+Qw6bcPQHs6+6HAwuI9+Ck8L0M9HD3I4DbgcfTLad5zGxX4FHgZ+7+Wa5fr5DDpqHbHOpdxsxaA7sTboModDvcNndf6+6bo+FMoHdCtSWlMb/fouTun7n7F9HreUAbM6tMuawmMbM2hKB5yN1/X88iTf79FXLY1HubQ51l5hJuc4Bw28PTHh29KnA73LY673/7E943l5K5wFnRWY1vAuvdfXXaReWDmXXNHDs0sz6Ev7Ni+E8QCGeaCFfzL3P3XzSwWJN/f0k8YqJZ3H2rmWVuc2gF3Ovur5nZOKDa3ecSfiAPRrc7rCP80Ra8Rm7bpWbWH9hK2LbBqRXcDGY2m3BWpjK6pWUs0AbA3e8G5hHOaCwHNgDnpFNp0zVi204HLjKzrcBGYFCR/CeYcSzwE2CJmS2Opl0NdIfm//50u4KIJKKQ30aJSAlR2IhIIhQ2IpIIhY2IJEJhIyKJUNiISCIUNiKSiP8Dl85BZfdExS0AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import random\n", + "\n", + "def tree3_alea(seg, angle=pi/3, re=0.33, rl=0.66, rnd=0.1):\n", + " re_rnd = re * (1 + random.random() * rnd)\n", + " rl_rnd = rl * (1 + random.random() * rnd)\n", + " \n", + " x, y = seg['x2'], seg['y2']\n", + " e = seg['E'] * re_rnd\n", + " le = distance(seg) * rl_rnd\n", + "\n", + " a = seg['angle']\n", + " a1 = a - (1 + random.random() * rnd) * angle\n", + " a2 = a + random.random() * rnd * angle\n", + " a3 = a + (1 + random.random() * rnd) * angle\n", + " \n", + " segments = [\n", + " segment(x, y, angle=a1, L=le, E=e),\n", + " segment(x, y, angle=a2, L=le, E=e),\n", + " segment(x, y, angle=a3, L=le, E=e),\n", + " ]\n", + " return segments\n", + "\n", + "premier = segment()\n", + "segs = [premier] + tree3_alea(premier, 1)\n", + "draw(segs);" + ] + }, + { + "cell_type": "markdown", + "id": "9ab893ca", + "metadata": {}, + "source": [ + "## Construction d'un arbre al\u00e9atoire\n", + "\n", + "L'id\u00e9e est d'ajouter 40% d'al\u00e9atoire sur trois param\u00e8tres : la r\u00e9duction des longueurs, la r\u00e9duction des \u00e9paisseurs, les angles des trois segments suivants." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "68cf03b7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def tree_recursive_alea(level, seg, angle=pi/6, re=0.6, rl=0.95, rnd=0.4):\n", + " all_segs = [seg]\n", + " iter_segs = [seg]\n", + " for i in range(level):\n", + " new_segs = []\n", + " for seg in iter_segs:\n", + " new_segs.extend(tree3_alea(seg, angle=angle, re=re, rl=rl, rnd=rnd))\n", + " all_segs.extend(new_segs)\n", + " iter_segs = new_segs\n", + " return all_segs\n", + "\n", + "premier = segment()\n", + "segs = tree_recursive_alea(3, premier)\n", + "draw(segs, L=3.5);" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a1be3ff5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "premier = segment()\n", + "segs = tree_recursive_alea(4, premier)\n", + "draw(segs, L=5);" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "62f70df7", + "metadata": {}, + "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.9.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/_doc/practice/exams/td_note_2023.ipynb b/_doc/practice/exams/td_note_2023.ipynb new file mode 100644 index 00000000..a6081364 --- /dev/null +++ b/_doc/practice/exams/td_note_2023.ipynb @@ -0,0 +1,680 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1A - Enonc\u00e9 26 octobre 2022\n", + "\n", + "Correction de l'examen du 26 octobre 2022." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice 1 : calcul de distances\n", + "\n", + "On souhaite calculer pour chaque rue de France le m\u00e9decin le plus proche (environ 100.000 m\u00e9decins g\u00e9n\u00e9ralistes). On suppose qu'on dispose des coordonn\u00e9es des rues $X$ et de celle des m\u00e9decins $Y$.\n", + "\n", + "### Q1 : tirer deux matrices al\u00e9atoires pour X et Y, de tailles diff\u00e9rentes" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([[0.07629544, 0.9432004 ],\n", + " [0.52035232, 0.47051663],\n", + " [0.89432851, 0.07652123],\n", + " [0.01653439, 0.99436816],\n", + " [0.1499065 , 0.10758634],\n", + " [0.29317605, 0.76729661],\n", + " [0.97237465, 0.25573414],\n", + " [0.60399214, 0.72086801],\n", + " [0.76951744, 0.75725811],\n", + " [0.6663647 , 0.92848284]]),\n", + " array([[0.07308657, 0.11122628],\n", + " [0.92539686, 0.48536534],\n", + " [0.43820312, 0.26151317],\n", + " [0.74683167, 0.40646889],\n", + " [0.92033983, 0.88312987]]))" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy\n", + "\n", + "def tirage_alea(n_rues, n_med):\n", + " return numpy.random.rand(n_rues, 2), numpy.random.rand(n_med, 2)\n", + "\n", + "X, Y = tirage_alea(10, 5)\n", + "X, Y" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q2 : calculer tous les distances entre X et Y\n", + "\n", + "On ne peut pas utiliser la fonction `cdist` (pairwise distances) mais rien n'emp\u00eache de l'essayer." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.83198031, 0.96466894, 0.77179962, 0.85889438, 0.8461793 ],\n", + " [0.57370393, 0.40531662, 0.22456834, 0.23536145, 0.57466486],\n", + " [0.82197491, 0.41002286, 0.49221173, 0.36141496, 0.80702793],\n", + " [0.88495069, 1.04168846, 0.84550633, 0.93752849, 0.91062519],\n", + " [0.07690611, 0.86261363, 0.32681556, 0.66757055, 1.0931767 ],\n", + " [0.69200264, 0.69223434, 0.52616512, 0.57965512, 0.63777092],\n", + " [0.91082466, 0.23438729, 0.53420279, 0.27127587, 0.62954985],\n", + " [0.80840816, 0.39845012, 0.48835731, 0.34532585, 0.3555345 ],\n", + " [0.94993319, 0.31340719, 0.59626523, 0.351522 , 0.19644616],\n", + " [1.00989466, 0.51327456, 0.70491577, 0.52817942, 0.25799275]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from scipy.spatial.distance import cdist\n", + "\n", + "cdist(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.83198031, 0.96466894, 0.77179962, 0.85889438, 0.8461793 ],\n", + " [0.57370393, 0.40531662, 0.22456834, 0.23536145, 0.57466486],\n", + " [0.82197491, 0.41002286, 0.49221173, 0.36141496, 0.80702793],\n", + " [0.88495069, 1.04168846, 0.84550633, 0.93752849, 0.91062519],\n", + " [0.07690611, 0.86261363, 0.32681556, 0.66757055, 1.0931767 ],\n", + " [0.69200264, 0.69223434, 0.52616512, 0.57965512, 0.63777092],\n", + " [0.91082466, 0.23438729, 0.53420279, 0.27127587, 0.62954985],\n", + " [0.80840816, 0.39845012, 0.48835731, 0.34532585, 0.3555345 ],\n", + " [0.94993319, 0.31340719, 0.59626523, 0.351522 , 0.19644616],\n", + " [1.00989466, 0.51327456, 0.70491577, 0.52817942, 0.25799275]])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def pairwise_distance(X, Y):\n", + " res = numpy.empty((X.shape[0], Y.shape[0]))\n", + " for i in range(X.shape[0]):\n", + " for j in range(Y.shape[0]):\n", + " d = (X[i, :] - Y[j, :]) ** 2\n", + " res[i, j] = d.sum() ** 0.5\n", + " return res\n", + "\n", + "pairwise_distance(X, Y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q3 : \u00e9crire un test unitaire qui v\u00e9rifie le r\u00e9sultat lorsque X est la matrice identit\u00e9 2x2" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from numpy.testing import assert_allclose\n", + "\n", + "def test_distance():\n", + " x = numpy.identity(2)\n", + " r = pairwise_distance(x, x)\n", + " assert_allclose(r, numpy.array([[0, 2**0.5], [2**0.5, 0]]))\n", + " # on peut \u00e9crire \u00e9galement\n", + " assert r.tolist() == [[0, 2**0.5], [2**0.5, 0]]\n", + "\n", + " \n", + "test_distance()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q4 : quel est le co\u00fbt de l'algorithme en fonction des dimensions de X et Y ?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le co\u00fbt est $O(nm)$ o\u00f9 $n$ est le nombre de lignes de $X$ et $m$ le nombre de lignes de $Y$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q5 : Ecrire une fonction qui retourne l'indice du m\u00e9decin le plus proche pour chaque rue" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 0, 0, 0, 1], dtype=int64)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def plus_proche_medecin(X, Y):\n", + " dist = pairwise_distance(X, Y)\n", + " return numpy.argmin(dist, axis=1)\n", + "\n", + "plus_proche_medecin(X[:5], Y[:2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q6 : on cr\u00e9e une grille 10x10 pour quadriller l'espace. Ecrire une fonction qui calcule les coordonn\u00e9es de la grille pour un point donn\u00e9." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def grille(p, p_min, p_max, n):\n", + " c = numpy.floor((p - p_min) / (p_max - p_min) * n) / n\n", + " return c\n", + "\n", + "def test_grille():\n", + " r = grille(numpy.array([[0.41, 0.71], [0.39, 0.99]]),\n", + " numpy.array([0, 0]),\n", + " numpy.array([1, 1]), 10)\n", + " assert r.tolist() == [[0.4, 0.7], [0.3, 0.9]]\n", + " \n", + "test_grille()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q7 : \u00e9crire une fonction qui cr\u00e9\u00e9 un dictionaire { case_grille : indices }." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def map_grille_indices(x, n=10):\n", + " xi = grille(x, x.min(axis=0), x.max(axis=0), n)\n", + " res = {}\n", + " for i in range(xi.shape[0]):\n", + " key = tuple(xi[i, :])\n", + " if key in res:\n", + " res[key].append(i)\n", + " else:\n", + " res[key] = [i]\n", + " return res\n", + "\n", + "def test_map():\n", + " x = numpy.arange(8).reshape((-1, 2))\n", + " d = map_grille_indices(x, 1)\n", + " assert d == {(0.0, 0.0): [0, 1, 2], (1.0, 1.0): [3]}\n", + " d = map_grille_indices(x, 2)\n", + " assert d == {(0.0, 0.0): [0, 1], (0.5, 0.5): [2], (1.0, 1.0): [3]}\n", + " d = map_grille_indices(x - 5, 2)\n", + " assert d == {(0.0, 0.0): [0, 1], (0.5, 0.5): [2], (1.0, 1.0): [3]}\n", + " \n", + "test_map()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q8 : modifier la fonction pairwise_distance pour ne calculer que les distances des points dans la m\u00eame case" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def pairwise_distance_grille(X, Y, n=10):\n", + " gx = map_grille_indices(X, n)\n", + " gy = map_grille_indices(Y, n)\n", + " res = numpy.empty((X.shape[0], Y.shape[0]))\n", + " res[:, :] = 1e6\n", + " for key, indices in gx.items():\n", + " if key not in gy:\n", + " continue\n", + " for i in indices:\n", + " for j in gy[key]:\n", + " d = (X[i, :] - Y[j, :]) ** 2\n", + " res[i, j] = d.sum() ** 0.5\n", + " return res\n", + "\n", + "def test_distance_grille():\n", + " x = numpy.random.rand(4, 2)\n", + " y = numpy.random.rand(2, 2)\n", + " r1 = pairwise_distance(x, y)\n", + " r2 = pairwise_distance_grille(x, y, n=2)\n", + " assert r1.shape == r2.shape\n", + " ind = r2.ravel() != 1e6\n", + " assert r1.ravel()[ind].tolist() == r2.ravel()[ind].tolist()\n", + "\n", + " \n", + "test_distance_grille()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q9 : Mesurer le temps pour deux matrices 1000x2, 100x2 ?" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "415 ms \u00b1 23.9 ms per loop (mean \u00b1 std. dev. of 7 runs, 1 loop each)\n" + ] + } + ], + "source": [ + "X, Y = tirage_alea(1000, 100)\n", + "\n", + "%timeit pairwise_distance(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6.41 ms \u00b1 470 \u00b5s per loop (mean \u00b1 std. dev. of 7 runs, 100 loops each)\n" + ] + } + ], + "source": [ + "%timeit pairwise_distance_grille(X, Y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On peut \u00e9galement l'\u00e9crire comme ceci :" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.8018622000236064,\n", + " 0.8201483000302687,\n", + " 0.8459657999919727,\n", + " 0.8035789999994449,\n", + " 0.8155568999936804]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import timeit\n", + "\n", + "timeit.repeat(\"pairwise_distance(X, Y)\", globals=globals(), repeat=5, number=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.026652099972125143,\n", + " 0.01595849997829646,\n", + " 0.01231670001288876,\n", + " 0.012164799962192774,\n", + " 0.011980499955825508]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "timeit.repeat(\"pairwise_distance_grille(X, Y)\", globals=globals(), repeat=5, number=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La seconde fonction est plus rapide car on ne calcule que les distances dans paires de points dans une m\u00eame case. Si on suppose que chaque case contient le m\u00eame nombre de points, $P$, il y a $G^2=100$ cases, le calcul est quasiment $G^2=100$ fois plus rapide. Il n'est pas tout-\u00e0-fait 100 fois plus rapide car il faut parcourir calculer la case de chaque point et les indexer. Mais cette op\u00e9ration est en $O(N+M)$ o\u00f9 $N$ est le nombre de rues et $M$ le nombre de m\u00e9decins.\n", + "\n", + "Ce raisonnement fonctionne si chaque case contient approximativement le m\u00eame nombre de points ce qui le cas ici car les points ont \u00e9t\u00e9 tir\u00e9s selon une loi uniforme. Mais imaginons qu'il y ait des points aberrants et que le minimum et maximum des coordonn\u00e9es calcul\u00e9s pour construire la grille soient tr\u00e8s grands ; dans ce cas, les points seront tous situ\u00e9s dans la m\u00eame case \u00e0 part les points extr\u00eames. L'optimisation propos\u00e9e ici ne fonctionnera pas \u00e0 moins de changer la fa\u00e7on de construire la grille en raisonnant par quantile par exemple." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Q10 : le r\u00e9sultat est utilis\u00e9 pour retourner le m\u00e9decin le plus proche ? Avec la seconde fonction, o\u00f9 les r\u00e9sultats sont-ils faux et que faire pour corriger ?" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([85, 57, 86, 18, 50, 45, 61, 50, 90, 6], dtype=int64)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def plus_proche_medecin(X, Y):\n", + " dist = pairwise_distance(X, Y)\n", + " return numpy.argmin(dist, axis=1)\n", + "\n", + "plus_proche_medecin(X, Y)[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([79, 57, 86, 0, 50, 45, 0, 50, 0, 6], dtype=int64)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def plus_proche_medecin_grille(X, Y):\n", + " dist = pairwise_distance_grille(X, Y)\n", + " return numpy.argmin(dist, axis=1)\n", + "\n", + "plus_proche_medecin_grille(X, Y)[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.443" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m = plus_proche_medecin(X, Y) \n", + "mg = plus_proche_medecin_grille(X, Y)\n", + "sum(m == mg) / m.shape[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Les deux fonctions co\u00efncident dans 50% des cas seulement. C'est attendu car on ne cherche les m\u00e9decins les plus proches dans la m\u00eame case que celle de la rue. Pr\u00e8s de la fronti\u00e8re d'une case, il est fort possible que le m\u00e9decin le plus proche soit de l'autre c\u00f4t\u00e9. Pour corriger cela, il faudrait regarder les m\u00e9decins les plus proches dans les cases voisines \u00e9galement, soit 9 cases au lieu de 1. L'algorithme n'irait plus 100 fois plus vite mais seulement 10 fois plus vite. Cela reste n\u00e9anmoins un gain significatif. Il serait sans doute possible de faire encore mieux en regardant que les cases voisines utiles, 4 plut\u00f4t que 9 mais ce n'est pas la seule optimisation possible.\n", + "\n", + "L'id\u00e9e de la grille est de limiter le nombre de calculs inutiles. Il ne sert \u00e0 rien de calculer la distance d'une rue et d'un m\u00e9decin tr\u00e8s \u00e9loign\u00e9s. Il existe d'autres techniques comme celles pr\u00e9sent\u00e9s dans [k-nearest neighbors algorithm](https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm) ou [Closest pair of points problem](https://en.wikipedia.org/wiki/Closest_pair_of_points_problem)." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/_doc/practice/index.rst b/_doc/practice/index.rst new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/_doc/practice/index.rst @@ -0,0 +1 @@ + diff --git a/_doc/practice/pdf b/_doc/practice/pdf new file mode 100644 index 00000000..e69de29b From 0529bab1981d3f0f94adf61bc6cd3d22f48a593e Mon Sep 17 00:00:00 2001 From: Xavier Dupre Date: Thu, 3 Aug 2023 00:21:32 +0200 Subject: [PATCH 2/8] exam --- _doc/c_data/i_exda.rst | 3 -- _doc/c_resume/python_sheet.rst | 3 -- _doc/defthe_index.rst | 4 --- _doc/i_faq.rst | 3 -- _doc/practice/exams/td_note_2006.pdf | Bin 0 -> 126019 bytes _doc/practice/exams/td_note_2007.pdf | Bin 0 -> 160247 bytes _doc/practice/exams/td_note_2008.pdf | Bin 0 -> 182170 bytes _doc/practice/exams/td_note_2009.pdf | Bin 0 -> 202659 bytes _doc/practice/exams/td_note_2010.pdf | Bin 0 -> 216633 bytes _doc/practice/exams/td_note_2010_rattrape.pdf | Bin 0 -> 400281 bytes _doc/practice/exams/td_note_2011.pdf | Bin 0 -> 316413 bytes _doc/practice/exams/td_note_2012.pdf | Bin 0 -> 397314 bytes _doc/practice/exams/td_note_2013.pdf | Bin 0 -> 615379 bytes _doc/practice/exams/td_note_2013_rattrape.pdf | Bin 0 -> 216090 bytes _doc/practice/exams/td_note_2014.pdf | Bin 0 -> 267221 bytes _doc/practice/exams/td_note_2015.pdf | Bin 0 -> 299891 bytes _doc/practice/exams/td_note_2016.pdf | Bin 0 -> 232364 bytes .../exams/td_note_2017_rattrapage.pdf | Bin 0 -> 170808 bytes _doc/practice/exams/td_note_2018.pdf | Bin 0 -> 161112 bytes _doc/practice/exams/td_note_2019.pdf | Bin 0 -> 134148 bytes _doc/practice/exams/td_note_2020.pdf | Bin 0 -> 105828 bytes _doc/practice/exams/td_note_2021.pdf | Bin 0 -> 126393 bytes _doc/practice/exams/td_note_2022.pdf | Bin 0 -> 76144 bytes .../exams/td_note_2022_rattrapage.pdf | Bin 0 -> 79382 bytes .../exams/td_note_2022_rattrapage2.pdf | Bin 0 -> 160697 bytes _doc/practice/exams/td_note_2023.pdf | Bin 0 -> 85270 bytes _doc/practice/index.rst | 29 ++++++++++++++++++ _doc/py/c_classes/classes.rst | 4 --- _doc/py/c_classes/questions.rst | 3 -- _doc/py/c_exception/exception.rst | 4 --- _doc/py/c_gui/tkinter.rst | 4 --- _doc/py/c_lang/collections.rst | 3 -- _doc/py/c_lang/constructions.rst | 3 -- _doc/py/c_lang/dates.rst | 4 --- _doc/py/c_lang/encoding.rst | 4 --- _doc/py/c_lang/syntaxe.rst | 4 --- _doc/py/c_lang/types.rst | 4 --- _doc/py/c_module/files.rst | 4 --- _doc/py/c_module/module.rst | 4 --- _doc/py/c_module/serialization.rst | 4 --- _doc/py/c_parallelisation/thread.rst | 4 --- _doc/py/c_regex/regex.rst | 4 --- _doc/py/i_expy.rst | 3 -- 43 files changed, 29 insertions(+), 73 deletions(-) create mode 100644 _doc/practice/exams/td_note_2006.pdf create mode 100644 _doc/practice/exams/td_note_2007.pdf create mode 100644 _doc/practice/exams/td_note_2008.pdf create mode 100644 _doc/practice/exams/td_note_2009.pdf create mode 100644 _doc/practice/exams/td_note_2010.pdf create mode 100644 _doc/practice/exams/td_note_2010_rattrape.pdf create mode 100644 _doc/practice/exams/td_note_2011.pdf create mode 100644 _doc/practice/exams/td_note_2012.pdf create mode 100644 _doc/practice/exams/td_note_2013.pdf create mode 100644 _doc/practice/exams/td_note_2013_rattrape.pdf create mode 100644 _doc/practice/exams/td_note_2014.pdf create mode 100644 _doc/practice/exams/td_note_2015.pdf create mode 100644 _doc/practice/exams/td_note_2016.pdf create mode 100644 _doc/practice/exams/td_note_2017_rattrapage.pdf create mode 100644 _doc/practice/exams/td_note_2018.pdf create mode 100644 _doc/practice/exams/td_note_2019.pdf create mode 100644 _doc/practice/exams/td_note_2020.pdf create mode 100644 _doc/practice/exams/td_note_2021.pdf create mode 100644 _doc/practice/exams/td_note_2022.pdf create mode 100644 _doc/practice/exams/td_note_2022_rattrapage.pdf create mode 100644 _doc/practice/exams/td_note_2022_rattrapage2.pdf create mode 100644 _doc/practice/exams/td_note_2023.pdf diff --git a/_doc/c_data/i_exda.rst b/_doc/c_data/i_exda.rst index e069c935..46b64cf2 100644 --- a/_doc/c_data/i_exda.rst +++ b/_doc/c_data/i_exda.rst @@ -3,9 +3,6 @@ Exemples ======== -.. contents:: - :local: - Numpy ===== diff --git a/_doc/c_resume/python_sheet.rst b/_doc/c_resume/python_sheet.rst index c7e62952..1101cd85 100644 --- a/_doc/c_resume/python_sheet.rst +++ b/_doc/c_resume/python_sheet.rst @@ -5,9 +5,6 @@ Cheat sheet: Python =================== -.. contents:: - :local: - Ce document résume en quelques pages les éléments essentiels de la syntaxe du langage python. Quelques lignes suffisent pour découvrir la version installée : diff --git a/_doc/defthe_index.rst b/_doc/defthe_index.rst index 6f45548c..2675e190 100644 --- a/_doc/defthe_index.rst +++ b/_doc/defthe_index.rst @@ -3,10 +3,6 @@ Syntaxes, Définitions ===================== -.. contents:: - :local: - :depth: 2 - Définitions =========== diff --git a/_doc/i_faq.rst b/_doc/i_faq.rst index 0fc091f5..3a5c9f45 100644 --- a/_doc/i_faq.rst +++ b/_doc/i_faq.rst @@ -5,9 +5,6 @@ FAQ === -.. contents:: - :local: - Langage Python ============== diff --git a/_doc/practice/exams/td_note_2006.pdf b/_doc/practice/exams/td_note_2006.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8513e986d0c8efea30b8c8120d9dc76436fafcd0 GIT binary patch literal 126019 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�t7&}dmJD|t8}l&p-_ywtsu~c^G69{aWVz)v#fYp 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 z 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 literal 0 HcmV?d00001 diff --git a/_doc/practice/exams/td_note_2008.pdf b/_doc/practice/exams/td_note_2008.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6b95bb540aedd722cd482411e4e6dde44e5ad45f GIT binary patch literal 182170 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�AWLUUXmJl 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