Triangle de Sierpiński ====================== .. py:module:: sierpinski El `Triangle de Sierpiński `__ és un conjunt fractal descrit per primer cop per Wacław Sierpiński el 1915. Es defineix de forma recursiva seguint l'algorisme següent: #. A partir d'un triangle, s'uneixen els punts mitjans dels seus costats, dividint el triangle inicial en quatre altres triangles. #. S'elimina el triangle interior. #. Es repeteixen els passos anteriors per cadascun dels tres triangles que queden. El triangle de Sierpiński és el límit de fer el procediment anterior de manera infinita. Volem fer una funció que calculi el triangle de Sierpiński, fins a un cert nivell d'aproximació. Direm que el triangle de Sierpiński de nivell *n* és el resultat fer *n* passos de la recursió, és a dir, d'aplicar *n* vegades la divisió recursiva dels triangles en quatre. Així, els triangles de la figura són els de nivell *n = 0, 1, 2, 3* i *4*. .. image:: https://upload.wikimedia.org/wikipedia/commons/0/05/Sierpinski_triangle_evolution.svg :align: center .. :height: 400 En el mòdul :file:`sierpinski.py` dissenyeu la funció recursiva: .. py:function:: sierpinski(t, n) Retorna la llista de triangles en què queda dividit el triangle de Sierpiński de nivell *n*, partint d'un triangle equilàter *t*. A tal efecte, representarem un triangle com una tupla de tres punts del pla; i un punt del pla com una tupla amb dues coordenades reals. Com exemple, podeu començar amb el triangle equilàter format pels 3 vèrtexs següents: *(0,1000), (-866,-500), (866,-500)*. Per a comprovar que heu realitzat bé els càlculs, podeu dibuixar els triangles obtinguts utilitzant `pylab/matplotlib `__. Facilitem la funció :py:func:`dibuixa` que podeu trobar al fitxer :download:`dibuixa_sierpinski.py` que permet dibuixar un iterable de triangles. També facilitem aquest fitxer amb diversos tests :download:`test-sierpinski.txt` .. warning:: Aneu amb compte a l'hora de fer el càlcul d'un triangle de Sierpiński de nivell *n*, ja que està compost per :math:`3^n` petits triangles! .. rubric:: Solució Disposeu d'una solució al fitxer :download:`sierpinski.py `.