Permalink
Browse files

correction oranges, tri, typo, footer, header

  • Loading branch information...
sdpython committed Mar 27, 2015
1 parent 558861c commit 21b0bb0566fe0b9c9643e8db2a49f64d3612ae41

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -38,3 +38,4 @@
add_extensions=['hachibee_sphinx_theme'])
html_show_copyright = False
html_title = "lesenfantcodaient.fr"
@@ -2,8 +2,8 @@
.. issue.
Démarrage
=========
Démarrage, Installation
=======================
.. index:: R, Julia, WinPython, Anaconda, pyminstall, scratch
@@ -29,28 +29,28 @@ s'installe avec ``pip install <module>``. Deux distrubutions possibles :
depuis le répertoire ``Anaconda3/Scripts`` (``conda install pandas`` par exemple).
Pour suivre ces cours il faut ajouter :
* `cvxopt <http://cvxopt.org/>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#cvxopt>`_)
* `goslate <http://pythonhosted.org/goslate/>`_
* `dbfread <http://dbfread.readthedocs.org/en/latest/>`_
* `rpy2 <http://rpy.sourceforge.net/>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2>`_)
* `mpld3 <http://mpld3.github.io/>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/>`_)
* `folium <https://github.com/python-visualization/folium>`_
* `graphviz <https://github.com/xflr6/graphviz>`_
* `numexpr <https://github.com/pydata/numexpr>`_
* `cvxopt <http://cvxopt.org/>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#cvxopt>`_)
* `goslate <http://pythonhosted.org/goslate/>`_
* `dbfread <http://dbfread.readthedocs.org/en/latest/>`_
* `rpy2 <http://rpy.sourceforge.net/>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2>`_)
* `mpld3 <http://mpld3.github.io/>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/>`_)
* `folium <https://github.com/python-visualization/folium>`_
* `graphviz <https://github.com/xflr6/graphviz>`_
* `numexpr <https://github.com/pydata/numexpr>`_
Il existe une version différente : `miniconda <http://conda.pydata.org/miniconda.html>`_.
La liste des packages manquant sera probablement différente.
Il existe une version différente : `miniconda <http://conda.pydata.org/miniconda.html>`_.
La liste des packages manquant sera probablement différente.
* `WinPython <https://winpython.github.io/>`_ (Windows). Sous Windows, elle a l'avantage d'inclure
`R <http://www.r-project.org/>`_ ou `Julia <http://julialang.org/>`_. On passe alors
facilement de python à R ou Julia depuis le même notebooks. Pour suivre ces cours il faut ajouter :
* `goslate <http://pythonhosted.org/goslate/>`_
* `dbfread <http://dbfread.readthedocs.org/en/latest/>`_
* `bokeh <http://bokeh.pydata.org/en/latest/>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#bokeh>`_)
* `pywin32 <https://pypi.python.org/pypi/pywin32>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32>`_)
* `folium <https://github.com/python-visualization/folium>`_
* `graphviz <https://github.com/xflr6/graphviz>`_
* `goslate <http://pythonhosted.org/goslate/>`_
* `dbfread <http://dbfread.readthedocs.org/en/latest/>`_
* `bokeh <http://bokeh.pydata.org/en/latest/>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#bokeh>`_)
* `pywin32 <https://pypi.python.org/pypi/pywin32>`_ (`Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32>`_)
* `folium <https://github.com/python-visualization/folium>`_
* `graphviz <https://github.com/xflr6/graphviz>`_
Sous Linux, l'installation ne pose pas de problèmes. Sous Windows, il faut installer
les packages `wheel <http://wheel.readthedocs.org/en/latest/>`_. Ces modules
@@ -78,6 +78,6 @@ avec le code suivant ::
Certains notebooks requièrent des outils supplémentaires :
* `graphviz <http://www.graphviz.org/>`_
* `graphviz <http://www.graphviz.org/>`_
@@ -1,10 +1,12 @@
.. _l-glossary:
Glossaire
=========
.. glossary::
Coût
Le coût d'un algorithme est le nombre d'opérations
élémentaires nécessaires pour qu'il se termine (une opération numérique,
@@ -32,7 +34,7 @@ Glossaire
pêle-mêle.
Un algorithme qui fonctionne avec un élément quelconque
fonctionne avec tous les éléments.
Récurrence
Voir `récurrence <http://fr.wikipedia.org/wiki/D%C3%A9finition_par_r%C3%A9currence>`_.
Quand on doit résoudre un problème et qu'on ne sait pas comment l'aborder,
@@ -1,7 +1,7 @@
Les enfants codaient
====================
*On dira bientôt cela.*
*à la découverte de la programmation et des algorithmes*
On programme pour faire des jeux, des sites internets, des recherches scientifiques,
@@ -24,7 +24,7 @@ Patchworks
----------
Ces patchwork sont des parcours de découverte prévus pour un groupe d'enfants.
Les sujets abordées sont choisis dans la partie :ref:`l-contenu-range`.
Les sujets abordés sont choisis dans la partie :ref:`l-contenu-range`.
.. toctree::
@@ -58,7 +58,7 @@ Apprendre la programmation ne nécessite pas nécessairement un écran
Il n'y a pas de manière idéale d'apprendre, chacun à sa manière de comprendre.
Pour moi, l'objectif n'est pas de tout comprendre mais de donner
à l'enfant l'envie d'apprendre seul, d'avoir envie de résoudre
un problème de la vie quotidienne par un programme.
un problème de la vie quotidienne d'une façon méthodique.
A partir de là, c'est gagné.
Au gré de mes lectures, je distinguerais les niveaux suivants :
@@ -82,7 +82,7 @@ Au gré de mes lectures, je distinguerais les niveaux suivants :
Dès qu'on sait mémoriser et ordonner, on peut faire la plupart des débuts d'exercices,
surtout s'ils sont manuels. Il est préférable de savoir lire et compter pour commencer
à bâtir un raisonnement, décrire une méthode, expliquer une méthode.
à bâtir un raisonnement, décrire une méthode, expliquer une façon de faire.
Enfin, il faut assimiler ce qu'est une variable pour finalement rédiger cette méthode
avec un langage de programmation (voir également :ref:`l-variable_combien`).
@@ -96,18 +96,18 @@ si vous ne connaissez pas la solution, Internet le saura (via un moteur de reche
Lorsqu'on sait manipuler les variables, un langage plus écrit s'impose.
Je recommande `Python <https://www.python.org/>`_ qui est présent dans la plupart
des universités (pas seulement en France)
(voir également :ref:`l-choix_langage`).
Un bon langage de programmation est nécessairement de syntaxe anglaise.
des universités (pas seulement en France, voir également :ref:`l-choix_langage`).
Un langage de programmation utile professionnellement est nécessairement de syntaxe anglaise.
**imagination**
Lorsqu'on parle de choses abstraites, il n'existe jamais une seule façon
d'en parler. Chacun à sa façon de les comprendre et de se les représenter.
Tout dépend de l'imagination de chacun. Et bien souvent,
plus on lit, plus on voit ce que d'autres ont imaginé, plus on a d'imagination
plus on lit, plus on voit ce que d'autres ont imaginé, plus on a d'imagination.
Il faut être curieux.
:ref:`quelques idées <l-lecture_2503>`
:ref:`quelques idées de lectures et autres <l-lecture_2503>`
@@ -190,7 +190,7 @@ <h3><a href="{{ pathto(master_doc) }}">{{ _('Top') }}</a></h3>
{%- if last_updated %}
<p class="last-updated">
{% trans last_updated=last_updated|e %}Dernière mise à jour {{ last_updated }}.{% endtrans %}
{% trans last_updated=last_updated|e %}Dernière mise à jour {{ last_updated }} - v{{ release }}.{% endtrans %}
<a href="http://www.xavierdupre.fr/">Xavier Dupré</a> -
<a href="http://lesenfantscodaient.fr">lesenfantscodaient.fr</a>
</p>
@@ -19,6 +19,9 @@ Enfin, mes amis, ma famille ont écouté patiemment toutes mes idées les plus f
les châteaux de riz dans la baignoire, des pavages sur le carrelage de la salle de bain...
Ils ont participé à la sélection des meilleures idées.
Les idées voyagent beaucoup. Un jour, elles se concrétisent, tissées par tout plein
de fils conducteurs. Pierre Cordier fut l'un de ses nombreux fils, très certainement le plus long
avec 300 kilomètres.
Contenu et apparence
@@ -22,7 +22,8 @@ Mise en scène
Cinq enfants sont placés autour d'un cercle.
Chacun a un numéro.
Il y a neuf orange numérotées, deux numéros 1, deux 2, deux 3, deux 4, un numéro 5.
Il y a neuf orange numérotées, deux numéros 1, deux 2, deux 3, deux 4, un numéro 5
(ça marche aussi avec des couleurs).
Au début chaque enfant prend deux oranges au hasard dans chaque main sauf le dernier.
Règle :
@@ -38,20 +39,36 @@ Objectif :
les oranges portant son numéro.
Indices
-------
Une petite histoire
-------------------
Il faut que chaque enfant se tienne de profil et représenter le problème
comme deux cercles d'oranges dont l'un est incomplet.
Arriver à la solution sans tricher peut s'avérer compliqué. De plus,
comment décrire un algorithme lorsque le vocabulaire de ce petit jeu
consiste à dire quel voisin doit passer une orange à celui qui n'en a pas.
La première chose à faire est d'y mettre un peu d'ordre et d'inventer
un langage un peu plus évolué. Pour raconter l'histoire,
il faut que chaque enfant se tienne de profil et représenter le problème
comme deux cercles d'oranges dont l'un est incomplet puisqu'il manque une orange.
.. image:: orange1.png
Comment faire tourner un cercle ?
**Q1 :** Comment faire tourner un cercle ?
**Q2 :** Comment faire tourner l'autre cercle ?
A partir de maintenant, on ne dira plus qu'il faut passer telle orange
à la main vide mais on dira une de ces phrases :
* Le cercle intérieur tourne de 1,2,3,... pas dans le sens inverse ou pas des aiguilles d'une montre.
* Le cercle extérieur tourne de 1,2,3,... dans le sens inverse ou pas des aiguilles d'une montre.
* Celui qui a une main vide change l'orange qu'il détient dans l'autre main.
Comment faire tourner l'autre cercle ?
On a maintenant tous les pièces de l'engrenage. Il ne manque plus qu'une astuce pour résoudre
l'énigme. Un dernier indice :
La première étape serait de faire tourner un cercle pour avoir
le plus de numéros qui correspondent.
**Q3 :** en supposant qu'un a réussi à résoudre l'énigme et que les oranges sont revenues
à la bonne place, peut-on avoir deux fois le même numéro sur le même cercle ?
Solution
Binary file not shown.
@@ -0,0 +1,54 @@
.. issue.
.. index:: algorithme, orange, tri, solution
.. _l-algo_orange_sol:
Le jeu des oranges (solution)
=============================
**Q1 :**
Il faut déjà que la main vide soit sur ce cercle. Ensuite, il suffit que les oranges
passent de main en main sur ce même cercle.
**Q2 :**
Pour change de cercle, il faut déplacer la main vide sur ce cercle.
Seul celui qui n'a qu'une orange peut le faire. Il change simplement
son orange de main.
**Q3 :**
Lorsque le jeu est fini, chaque participant doit avoir les deux oranges portant son numéro
dans chaque main, une sur dans le cercle intérieur, une dans le cercle extérieur.
Par conséquent, pour se rapprocher de la solution, il faut faire passer un numéro en double
d'un cercle à l'autre. Pour ça :
On fait tourner le cercle qui ne contient pas ce numéro en double jusqu'à ce que
la main vide soit en face de ce numéro et on le fait changer de cercle.
Petite astuce, si un cercle contient un numéro en double, l'autre cercle en contient souvent un en double,
mais pas le même. Ensuite, dans l'image qui suit, pensez-vous que les oranges
du cercle extérieur (numéros oranges) soient loin de leur positions finales (numéros noirs) ?
.. image:: orange2.png
Pas vraiment, d'ailleurs pour y arriver, il suffit de faire tourner le cercle extérieur. Par conséquent,
si sur un cercle, les oranges sont triées dans le bon ordre (ici le sens inverse
des aiguilles d'une montrre), on est pas loin de la solution.
L'algorithme décrit de manière succinte peut s'écrire :
Il faut faire tourner les deux cercles, échanger des oranges entre les deux
de telle sorte que les deux cercles contiennent tous deux des numéros distincts
(pas deux fois le même numéros sur le même cercle) et que les numéros des oranges
soient triés dans le même ordre que les numéros des enfants.
Et voilà, il ne reste plus qu'à le faire maintenant. Mais :ref:`trier <l-algo_tri>`, on sait faire non ?
@@ -47,3 +47,9 @@ Ensuite, il est vrai, quand on veut vraiment emmener quelque chose en vacances,
on fait tout pour que ça rentre dans le coffre. On fait, on défait mais on enlève rarement
les plus gros sacs du fond du coffre.
Liens
-----
* `Le problème du sac à dos <https://interstices.info/jcms/c_19213/le-probleme-du-sac-a-dos>`_ (interstices.info)
@@ -73,6 +73,7 @@ cartes avec ses voisins si elles ne sont pas dans le bon ordre.
.. image:: tri1.png
Ce tri correspond au `tri à bulles <http://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles>`_.
Pourquoi à votre avis ?
@@ -100,7 +101,7 @@ Il s'agit dans ce dernier cas du `tri par arbre <http://rmdiscala.developpez.com
**couper, trier, fusionner**
Lorsqu'on est plusieurs ou qu'on doit trier un grand nombre de carte,
Lorsqu'on est plusieurs ou qu'on doit trier un grand nombre de cartes,
il est plus simple de trier des petits bouts puis de les assembler.
Comment regrouper deux jeux de cartes triés pour ne former qu'un seul
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Oops, something went wrong.

0 comments on commit 21b0bb0

Please sign in to comment.