{ "metadata": { "name": "sierpinski_triangle" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "COMPLEMENT=120\n", "FACTOR = math.sqrt(3)/2\n", "\n", "class Carpet:\n", " def __init__(self, x, y, side):\n", " self.x = x\n", " self.y = y\n", " self.side = side\n", " self.height = FACTOR*side\n", "\n", " def _children(self, x, y, side, height, step=0):\n", " if step==0:\n", " yield (x, y)\n", "\n", " else:\n", " newSide = side/2\n", " newHeight = height/2\n", "\n", " for f in self._children(x, y, newSide, newHeight, step - 1):\n", " yield f\n", " for f in self._children(x + newSide, y, newSide, newHeight, step - 1):\n", " yield f\n", " for f in self._children(x + newSide/2, y + newHeight, newSide, newHeight, step - 1):\n", " yield f\n", "\n", " def children(self, steps=0):\n", " return self._children(self.x, self.y, self.side, self.height, steps)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "c = Carpet(0, 0, 500)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "#We are working recursively, and though python's iterators are very good in preserving memory, you should not\n", "#push too hard on the steps, unless you wish to crash the notebook ;-)\n", "points = list(c.children(steps=7))\n", "X = list(map(lambda z : z[0], points))\n", "Y = list(map(lambda z : z[1], points))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(X, Y, 'r.', markersize=2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 41, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 41 } ], "metadata": {} } ] }