diff options
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.m4 | 30 |
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 |