Dessins fractals
Exemples de constructions
Le cadre
On vous propose de construire une jolie fractale.
On commence par associer une couleur aux nombres de Fibonacci, ou plus simplement un numéro de couleur.
À la représentation minimale de Zeckendorf de n, on peut associer une suite de bandes colorées collées les unes aux autres à la ligne n, en partant du bord à gauche et en commençant par les plus grands morceaux.
Par exemple avec \(100 = 3 + 8 + 89\), on veut :
bande(100, 0, 89, 9): depuis la colonne0et de largeur89, avec la couleur9associée à89bande(100, 89, 8, 4): depuis la colonne89et de largeur8, avec la couleur4associée à8bande(100, 97, 3, 2): depuis la colonne97et de largeur3, avec la couleur2associée à3
Le tout à la ligne 100, car on traitait le cas \(=100\).
Le début de votre programme
Vous avez le droit de dessiner les bandes dans l'ordre que vous souhaitez, cependant, votre programme sera trié et les premières lignes seront disponibles. Il devra commencer comme ceci :
>>> print(programme)
Votre programme de dessin :
bande(1, 0, 1, 0)
bande(2, 0, 2, 1)
bande(3, 0, 3, 2)
bande(4, 0, 3, 2)
bande(4, 3, 1, 0)
bande(5, 0, 5, 3)
bande(6, 0, 5, 3)
bande(6, 5, 1, 0)
bande(7, 0, 5, 3)
bande(7, 5, 2, 1)
bande(8, 0, 8, 4)
...
Explication pour ces dernières lignes affichées :
- \(7 = 5 + 2\), donc on dessine les bandes
bande(7, 0, 5, 4); en effet,4est la couleur associée à5bande(7, 5, 2, 2); en effet,2est la couleur associée à2
- \(8 = 8\), donc on dessine une seule bande
bande(8, 0, 8, 5); en effet,5est la couleur associée à8
- ...
- le programme se poursuit, si besoin.
Exercice
Coder une fonction fractale_min qui prend un entier positif n en paramètre et qui dessine toutes les bandes nécessaires, peu importe l'ordre, pour tous les entiers positifs inférieurs ou égaux à n.
La fonction bande est uniquement disponible dans cet exercice pour dessiner une bande horizontale. bande(i, j, l, c) dessine une bande sur la ligne i, depuis la colonne j vers la droite, de longueur l et dont la couleur porte le numéro c.
- Contraintes
-
- \(0 < n < 1000\)
- Fonction récursive interdite
- Modules
mathetfunctoolsinterdits - Code source limité à 2000 caractères
Coder, cliquer sur 'Lancer', patienter... votre image sera ici !
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)