Imaginez un instant un petit vendeur d'œufs nommé Bayo. Bayo vend des œufs depuis plusieurs années. Chaque matin, il installe ses plateaux, les remplit soigneusement et les prépare pour ses clients.
Mais un jour, en regardant ses plateaux d'œufs, une idée lui traverse l'esprit : « Et si je pouvais avoir des plateaux spécialement conçus selon mes besoins ? » L'idée lui plaît tellement qu'il décide de se rendre dans une entreprise spécialisée dans la conception de plateaux d'œufs personnalisés.
Lorsqu'il arrive, il explique précisément ce qu'il veut. - Je voudrais trois types de plateaux différents. Le responsable de l'entreprise prend un carnet et commence à noter.
Le premier plateau : COL-3
Bayo poursuit : - Pour le premier plateau, je veux quelque chose de particulier. Je veux qu'il ait exactement 3 colonnes, mais le nombre de lignes peut varier.
Le responsable l'écoute attentivement. - Et pourquoi voulez-vous que le nombre de lignes puisse varier ? - Parce que je ne veux pas avoir à choisir à l'avance le nombre exact d'œufs que je vais mettre dedans. Je veux simplement les déposer dans un petit coffret intégré dans un coin du plateau. Ensuite, le plateau doit s'adapter automatiquement au nombre d'œufs que j'y dépose. - Donc, que vous en mettiez 6, 12 ou 40, le plateau doit toujours s'organiser pour tous les accueillir ? - Exactement.
Il inscrit sur son carnet : COL-3 - 3 colonnes fixes, nombre de lignes variable, adaptation automatique au nombre d'œufs.
Le deuxième plateau : LIGNE-6
- Pour le deuxième plateau, je veux l'inverse. Celui-ci doit avoir exactement 6 lignes, mais le nombre de colonnes doit pouvoir varier. - Même principe que pour le premier, mais dans l'autre sens ? - Oui. Un coffret, je dépose mes œufs, et le plateau calcule automatiquement le nombre de colonnes nécessaires pour tous les ranger.
Le responsable note : LIGNE-6 - 6 lignes fixes, nombre de colonnes variable, adaptation automatique au nombre d'œufs.
Le troisième plateau : FIXE-30
- Et enfin, un troisième plateau, beaucoup plus simple. - Comment doit-il fonctionner ? - Celui-là ne doit pas s'adapter du tout. Je veux qu'il contienne exactement 30 œufs, avec 5 colonnes et 6 lignes. Rien de plus, rien de moins. Pas besoin de coffret ni de système automatique.
Le responsable écrit : FIXE-30 - 5 colonnes, 6 lignes, 30 œufs maximum, aucune adaptation automatique.- Voilà, dit Bayo. C'est exactement ce que je veux. L'entreprise accepte de relever le défi.
La conception des plateaux
Les ingénieurs commencent par le plateau COL-3. Ils savent une chose avec certitude : il doit toujours avoir 3 colonnes. Mais le nombre de lignes dépendra du nombre d'œufs que Bayo y déposera - impossible de le savoir à l'avance. Ils se souviennent d'une règle mathématique simple : nombre de colonnes × nombre de lignes = nombre total d'œufs. Donc, en connaissant le nombre d'œufs et le nombre de colonnes, ils peuvent déduire le nombre de lignes : nombre de lignes = nombre d'œufs ÷ nombre de colonnes.
Prenons un exemple. Bayo dépose 12 œufs. Le calcul donne 12 ÷ 3 = 4 lignes, exactement. Mais s'il dépose 10 œufs ? Le calcul donne 10 ÷ 3 = 3,33... Un plateau ne peut pas avoir 3,33 lignes, donc le système arrondit vers le haut : il crée 4 lignes. Le plateau a alors 3 × 4 = 12 cases, mais seulement 10 œufs à y ranger - il restera donc 2 cases vides. Ce n'est pas une erreur : le système a simplement créé assez de cases pour accueillir tous les œufs.
Pour piloter cette adaptation, les ingénieurs installent sur le coffret un bouton nommé R (pour Rows, les lignes). Quand il est activé, le système est autorisé à ajouter les lignes nécessaires.
Ils passent ensuite au plateau LIGNE-6. Cette fois, le nombre de lignes est fixé (6), et c'est le nombre de colonnes qu'il faut déduire : nombre de colonnes = nombre d'œufs ÷ nombre de lignes. Avec 18 œufs : 18 ÷ 6 = 3 colonnes, pile. Avec 20 œufs : 20 ÷ 6 = 3,33..., arrondi à 4 colonnes. Le plateau a alors 6 × 4 = 24 cases, dont 4 resteront vides.
Pour ce plateau, les ingénieurs ajoutent un bouton C (pour Columns, les colonnes). Quand il est activé, le système ajoute les colonnes nécessaires. Pour FIXE-30, rien à calculer : Bayo a déjà donné les deux dimensions (5 colonnes, 6 lignes), donc aucun système d'adaptation n'est nécessaire.
Le grand test
Quelques jours plus tard, les trois plateaux sont prêts. Bayo arrive, curieux de découvrir le résultat. Il dépose plusieurs œufs dans le coffret de COL-3. Le système compte, calcule le nombre de lignes nécessaires, le bouton R s'allume en vert, et les lignes s'ajoutent. Bayo sourit : « Ça fonctionne ! »
Il passe à LIGNE-6, dépose ses œufs. Les 6 lignes restent fixes, le système calcule le nombre de colonnes, le bouton C s'allume en vert, et les colonnes apparaissent. Enfin, on lui présente FIXE-30 : 5 colonnes, 6 lignes, 30 œufs, aucun système automatique - exactement ce qu'il avait demandé. Bayo repart ravi, et n'a plus jamais eu à se soucier de la façon de ranger ses œufs.
La suite (la traduction complète en CSS, avec les démos) est réservée aux contributeurs.