Last active
November 25, 2019 18:34
-
-
Save ELC/c70f818eb3afab743f2d84e1d5b8e49e to your computer and use it in GitHub Desktop.
Pascal Triangle Visualization
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ffmpeg |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
channels: | |
- defaults | |
- conda-forge | |
dependencies: | |
- ipython | |
- ipywidgets | |
- matplotlib | |
- numpy | |
- scipy |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"import numpy as np\n", | |
"from matplotlib import animation\n", | |
"from IPython.display import HTML\n", | |
"\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def memoize(f):\n", | |
" memo = {}\n", | |
" def helper(x):\n", | |
" if x not in memo:\n", | |
" memo[x] = f(x)\n", | |
" return memo[x]\n", | |
" return helper" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"@memoize\n", | |
"def pascal_triangle(n):\n", | |
" if n == 0:\n", | |
" return [np.array([1])]\n", | |
" prev = pascal_triangle(n - 1)[-1]\n", | |
" middle = np.add(prev[:-1], prev[1:])\n", | |
" return pascal_triangle(n - 1) + [np.array([1, *middle, 1], dtype=np.ulonglong)]\n", | |
"\n", | |
"@memoize\n", | |
"def pascal_last_row(n):\n", | |
" return pascal_triangle(n)[-1]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def animate(i, length, ax, width):\n", | |
" if i == 0:\n", | |
" im = ax.imshow([[0],[0]], cmap='Greys', aspect='equal', extent=(0, width - 2, 0, length), animated=True)\n", | |
" return im,\n", | |
"\n", | |
" elements = pascal_last_row(i)\n", | |
" \n", | |
" extra_space = [0] * ((width - len(elements) - 1) // 2)\n", | |
" \n", | |
" elements = extra_space + list(elements) + extra_space\n", | |
"\n", | |
" real_width = len(elements)\n", | |
"\n", | |
" if real_width % 2 == 1:\n", | |
" real_width -= 1\n", | |
" \n", | |
" binary_elements = []\n", | |
"\n", | |
" for j in elements:\n", | |
" row = []\n", | |
" for k in bin(j)[2:].zfill(length):\n", | |
" row.append(int(k))\n", | |
" \n", | |
" binary_elements.append(row)\n", | |
" \n", | |
" im = ax.imshow(np.transpose(binary_elements), cmap='Greys', aspect='equal', extent=(0, real_width, 0, length), animated=True)\n", | |
" \n", | |
" return im," | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<video width=\"576\" height=\"466\" controls autoplay loop>\n", | |
" <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAA9EG1kYXQAAAKuBgX//6rcRem9\n", | |
"5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTUyIHIyODU0IGU5YTU5MDMgLSBILjI2NC9NUEVHLTQg\n", | |
"QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE3IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n", | |
"eDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MSByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9\n", | |
"MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVm\n", | |
"PTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6\n", | |
"b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MTIgbG9v\n", | |
"a2FoZWFkX3RocmVhZHM9MiBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxh\n", | |
"Y2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHly\n", | |
"YW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3\n", | |
"ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVz\n", | |
"aD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBx\n", | |
"cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAADLZYiE\n", | |
"ABf//vfUt8yy7VMn77af/r//UAcVTV3w+9arU1kRkRdhGrxFDa/90q/y6+4qo4pHJS3qQShrG4mw\n", | |
"AAADAAADAAH6ZO3IeG5kc8aK4Pwt9EMxA8tfw9YoqYVYDeC2BMer2Lt9PPHlfQAAAwHuACTBiBOx\n", | |
"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\n", | |
"\">\n", | |
" Your browser does not support the video tag.\n", | |
"</video>" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"frames = 20\n", | |
"last_row = pascal_last_row(frames)\n", | |
"length = len(bin(max(last_row))[2:]) - 1\n", | |
"width = len(last_row)\n", | |
"\n", | |
"aspect_ratio = width / length\n", | |
"\n", | |
"frame_width = 8\n", | |
"\n", | |
"fig, ax = plt.subplots(figsize=(frame_width, frame_width / aspect_ratio))\n", | |
"\n", | |
"fig.subplots_adjust(left=0, bottom=0.01, right=1, top=1)\n", | |
"\n", | |
"ax.set_xticks([]) \n", | |
"ax.set_yticks([]) \n", | |
"\n", | |
"if frames % 2 == 0:\n", | |
" width += 1\n", | |
"\n", | |
"anim = animation.FuncAnimation(fig, animate, frames=frames, interval=1000, blit=True, fargs=(length, ax, width))\n", | |
"\n", | |
"plt.close() # Avoid extra picture\n", | |
"\n", | |
"HTML(anim.to_html5_video())" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"Writer = animation.writers['ffmpeg']\n", | |
"writer = Writer(fps=1, metadata=dict(artist='Me'), bitrate=1800)\n", | |
"\n", | |
"anim.save('im.mp4', writer=writer)" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.7" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment