summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Ant.m4
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Ant.m4')
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Ant.m430
1 files changed, 30 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Ant.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Ant.m4
new file mode 100644
index 00000000000..f4a22226a20
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/extras/Ant.m4
@@ -0,0 +1,30 @@
+.PS
+# Ant.m4 (Langton's ant)
+# https://tex.stackexchange.com/questions/361838/how-to-create-a-langtons-ant-in-latex/361891
+# https://en.wikipedia.org/wiki/Langton%27s_ant
+gen_init
+NeedDpicTools
+ picwid = 5
+ D: (0,0); DD: (1,0); t[D] = 0
+ minx = 0; miny = 0; maxx = 0; maxy = 0
+ for i = 0 to 10500 do {
+ if (t[D]%2) == 0 then { DD: (-DD.y,DD.x) } else { DD: (DD.y,-DD.x) }
+ t[D] += 1
+ D: D+DD
+ if D.x > maxx then { maxx = D.x; for y = miny to maxy do { t[maxx,y] = 0 }} \
+ else { if D.x < minx then {
+ minx = D.x; for y = miny to maxy do { t[minx,y] = 0 }}}
+ if D.y > maxy then { maxy = D.y; for x = minx to maxx do { t[x,maxy] = 0 }} \
+ else { if D.y < miny then {
+ miny = D.y; for x = minx to maxx do { t[x,miny] = 0 }}}
+ }
+ boxwid = picwid/(maxx-minx)
+ boxht = picwid/(maxy-miny)
+ if boxht > boxwid then { boxht = boxwid } else { boxwid = boxht }
+ circlerad = boxht/2
+ hue = 240; val = 1
+ for i = minx to maxx do { for j = miny to maxy do {
+ if t[i,j]!=0 then { sat = (t[i,j]%20)/20
+ hsvtorgb(hue,sat,val,r,g,b)
+ circle colored rgbstring(r,g,b) at (-i,j)*boxwid } }}
+.PE