Skip to content

Instantly share code, notes, and snippets.

@cjauvin
Last active January 27, 2016 17:03
Show Gist options
  • Save cjauvin/978111b89b52f3ec0d9d to your computer and use it in GitHub Desktop.
Save cjauvin/978111b89b52f3ec0d9d to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Fun with Rule 110"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nGvyYAgBo+H8BlPnqT8HaBGoAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108321208>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib\n",
"matplotlib.rcParams['figure.figsize'] = (12.0, 10.0)\n",
"\n",
"rule_110 = {\n",
" (1, 1, 1): 0, \n",
" (1, 1, 0): 1,\n",
" (1, 0, 1): 1,\n",
" (1, 0, 0): 0,\n",
" (0, 1, 1): 1,\n",
" (0, 1, 0): 1,\n",
" (0, 0, 1): 1,\n",
" (0, 0, 0): 0\n",
"}\n",
"\n",
"def get_grid(n, rule):\n",
" grid = np.zeros((n + 2, n + 2), dtype=int) # pad grid for easier lookup\n",
" grid[0, n + 1] = 1\n",
" for i in range(1, n + 1):\n",
" for j in range(1, n + 1):\n",
" grid[i, j] = rule[tuple(grid[i - 1][j - 1:j + 2])]\n",
" return grid[1:n + 1, 1:n + 1] # remove padding\n",
" \n",
"plt.imshow(\n",
" get_grid(256, rule_110), \n",
" cmap='Greys', interpolation='nearest'\n",
")\n",
"plt.axis('off');"
]
}
],
"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.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment