Skip to content

Instantly share code, notes, and snippets.

@Lirimy
Last active April 23, 2018 08:46
Show Gist options
  • Save Lirimy/02d65e0d7589b7ab6a65dc0c4e22ac0a to your computer and use it in GitHub Desktop.
Save Lirimy/02d65e0d7589b7ab6a65dc0c4e22ac0a to your computer and use it in GitHub Desktop.
Sierpinski Triangle
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sierpinski Triangle \n",
"\n",
"Copyright (c) 2018 Lirimy \n",
"Released under the MIT license \n",
"https://opensource.org/licenses/MIT "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"using Images\n",
"using Colors\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"180×180 Array{Gray{N0f8},2}:\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) … Gray{N0f8}(1.0) Gray{N0f8}(1.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(1.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) … Gray{N0f8}(1.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(1.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) … Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(1.0)\n",
" ⋮ ⋱ \n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) … Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) … Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Pascal's Triangle\n",
"\n",
"N = 180\n",
"u = zeros(Int, N, N)\n",
"u[1, 1] = 1\n",
"\n",
"# upper-left half\n",
"for i in 2:N # scan diagonally\n",
" \n",
" # boundary\n",
" u[i, 1] = u[i-1, 1]\n",
" u[1, i] = u[1, i-1]\n",
" \n",
" for j in 2:i-1\n",
" u[j, i-j+1] = mod(u[j-1, i-j+1] + u[j, i-j], 2) # XOR\n",
" end\n",
"end\n",
"\n",
"# lower-right half\n",
"for i in 2:N\n",
" for j in i:N\n",
" u[j, N+i-j] = mod(u[j-1, N+i-j] + u[j, N+i-j-1], 2) # XOR\n",
" end\n",
"end\n",
" \n",
"img = Gray.(u)\n",
"#save(\"sier-pascal.png\", img)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"180×360 Array{Gray{N0f8},2}:\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) … Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) … Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) … Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" ⋮ ⋱ \n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) … Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) … Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(0.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(0.0)\n",
" Gray{N0f8}(1.0) Gray{N0f8}(0.0) Gray{N0f8}(1.0) Gray{N0f8}(0.0)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Cellular automata (Rule 90)\n",
"\n",
"N = 360\n",
"M = Int(N/2)\n",
"u = zeros(Int, M, N)\n",
"u[1, Int(N/2)] = 1 # sierpinski triangle\n",
"#u[1, :] .= rand(0:1, N) # random init\n",
"\n",
"for i in 2:M\n",
" \n",
" u[i, 1] = mod(u[i-1, N] + u[i-1, 2], 2)\n",
" u[i, N] = mod(u[i-1, N-1] + u[i-1, 1], 2)\n",
" \n",
" for j in 2:N-1\n",
" u[i, j] = mod(u[i-1, j-1] + u[i-1, j+1], 2)\n",
" end\n",
"end\n",
"\n",
"img = Gray.(u)\n",
"#save(\"sier-rule90.png\", img)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 0.6.2",
"language": "julia",
"name": "julia-0.6"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "0.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment