%I #61 Jan 06 2025 22:04:48
%S 3,-2,3,-2,3,2,0,2,-3,2,3,2,-3,2,3,-2,3,-2,3,-2,0,2,-3,2,3,2,-3,2,3,
%T -2,3,-2,3,2,0,2,-3,2,3,-2,0,2,-3,2,3,2,-3,2,3,-2,3,-2,3,2,0,2,-3,2,3,
%U -2,0,2,-3,2,3,2,-3,2,3,-2,3,-2,3,2,0,2,-3,2,3,2,-3,-2,3,2,-3,2,3,-2,3,-2
%N Turn sequence of a non-Eulerian path for drawing an infinite aperiodic tiling based on the "hat" monotile. See the comments section for details.
%C The curve can be drawn using turtle graphics rules. Each term of the sequence encodes an angle of rotation in units of (1/6)*Pi. For example, a(k) = 3 would mean a turn of 90 degrees to the left, a(k) = -2 a turn of 60 degrees to the right. To draw the tiling we draw a line of length l and then take a term of the sequence to determine the direction of further drawing by rotation relative to the current drawing orientation. The length of the line segments between terms of the sequence is either sqrt(3) or 1 units. We start by drawing with sqrt(3) units of length; every time we reach a term with 3 or -3 in the sequence we toggle the selected line length from sqrt(3) to 1, or back again from 1 to sqrt(3).
%C The drawing process works by recursion into the H8 metatile and its supertiles; this means a(1..14) draws a single "hat" monotile. Then the terms a(1..140) draw the H8 metatile and a(1..1588) and so forth (see formula section) draw the next next larger supertile of the H8 metatile. (For details regarding H8 see page 18 in arXiv:2303.10798.) The number of "hat" tiles visible after k recursions is Fibonacci(4*k + 2) (A033890); however, tiles and line segments will be overdrawn multiple times in this process.
%H Thomas Scheuerle, <a href="/A363348/b363348.txt">Table of n, a(n) for n = 1..1588</a>
%H David Smith, Joseph Samuel Myers, Craig S. Kaplan, and Chaim Goodman-Strauss, <a href="https://arxiv.org/abs/2303.10798">An aperiodic monotile</a>, arXiv:2303.10798 [math.CO], 2023.
%H Thomas Scheuerle, <a href="/A363348/a363348.m.txt">MATLAB program</a>
%H Thomas Scheuerle, <a href="/A363348/a363348.png">1st iteration: drawing of a(1..140)</a> (results in 8 "hat" tiles).
%H Thomas Scheuerle, <a href="/A363348/a363348_1.png">2nd iteration: drawing of a(1..1588)</a> (results in 55 "hat" tiles).
%H Thomas Scheuerle, <a href="/A363348/a363348_2.png">3rd iteration: drawing of a(1..206104)</a> (results in 377 "hat" tiles).
%H Thomas Scheuerle, <a href="/A363348/a363348_3.png">4th iteration: drawing of a(1..2462272)</a> (results in 2584 "hat" tiles).
%F a(1..14) = {3,-2, 3,-2, 3, 2, 0, 2, -3, 2, 3, 2,-3, 2} = a(1..L(1)) and for k > 0:
%F a(1..L(k+1)) = {a(1..L(k)), a(1..c1(k)-1), -a(c1(k)), a(c2(k)+1..L(k)), a(1..c3(k)-1), -a(c3(k)), a(c2(k)+1..L(k)), a(1..c3(k)-1), -a(c3(k)), a(c2(k)+1..L(k)), a(1..c4(k)-1), -a(c4(k)), a(c5(k)+1..L(k)), a(1..c3(k)-1), -a(c3(k)), a(c2(k)+1..L(k)), a(1..c3(k)-1), -a(c3(k)), a(c2(k)+1..L(k)), a(1..c4(k)-1), -a(c4(k)), a(c6(k)+1..L(k))}. With:
%F L(k) = 12*L(k-1) - 7*L(k-2) + L(k-3) for k > 3 with L(1..3) = {14, 140, 1588}.
%F r1(k) = r5(k-1) + r1(k-1) + r7(k-1), with r1(1) = 6.
%F r2(k) = r2(k-1) + r7(k-1), with r2(1) = 6.
%F r3(k) = 2*r6(k-1) + r3(k-1) + r4(k-1) + r7(k-1), with r3(1) = 6 (A003699).
%F r4(k) = r5(k+1) = 2*r5(k-1) + 3*r3(k-1) + r4(k-1), with r4(1) = 8 (A052530).
%F r5(k) = r5(k-1) + r3(k-1), with r5(1) = 2. r4, r5, r6 are in the case of this tiling accidentally essentially the same recurrence.
%F r6(k) = r5(k) = r5(k-1) + r6(k-1) + r7(k-1), with r6(1) = 2 (A052530).
%F r7(k) = r6(k-1) + 2*r3(k-1), with r7(1) = 4 (A003500).
%F r8(k) = r12(k-1) + r8(k-1) + r14(k-1), with r8(1) = 1
%F r9(k) = r9(k-1) + r14(k-1), with r9(1) = 1.
%F r10(k) = 2*r13(k-1) + r10(k-1) + r11(k-1) + r14(k-1), with r10(1) = 1 (A061278).
%F r11(k) = 2*r13(k-1) + 3*r10(k-1) + r11(k-1), with r11(1) = 1.
%F r12(k) = r13(k-1) + r10(k-1), with r12(1) = 1.
%F r13(k) = r12(k-1) + r13(k-1) + r14(k-1), with r13(1) = 1.
%F r14(k) = r13(k-1) + 2*r10(k-1), with r14(1) = 1 (A108946 unsigned).
%F c1(k) = r2(k) + Sum_{m=1..k-1} (r9(k+1-m)*L(m)) = {6, 38, 374, 4204, ...}.
%F c2(k) = c1(k) - Sum_{m=1..k-1} L(m) = {6, 24, 220, 2462, ...}.
%F c3(k) = r2(k) + r3(k) + Sum_{m=1..k-1} ((r9(k+1-m) + r10(k+1-m) - 1)*L(m)) = {12, 116, 1282, 14572, ...}.
%F c4(k) = r2(k) + r4(k) + Sum_{m=1..k-1} ((r9(k+1-m) + r11(k+1-m) - 1)*L(m)) = {14, 138, 1550, 17630, ...}.
%F c5(k) = r2(k) + r7(k) + Sum_{m=1..k-1} ((r9(k+1-m) + r14(k+1-m) - 2)*L(m)) = {10, 66, 720, 8170, ...}.
%F c6(k) = c4(k) - Sum_{m=1..k-1} L(m) = {14, 124, 1396, 15888, ...}.
%F Description of curve position:
%F OrientationAngle(n) = Sum_{k = 1..n-1} a(k)*Pi*(1/6).
%F Xcoordinate(n) = Sum_{k = 1..n} cos(OrientationAngle(n))*sqrt(1 + 2*((1 + Sum_{k = 1..n-1} [abs(a(k)) = 3]) mod 2)).
%F Ycoordinate(n) = Sum_{k = 1..n} sin(OrientationAngle(n))*sqrt(1 + 2*((1 + Sum_{k = 1..n-1} [abs(a(k)) = 3]) mod 2)). [] is the Iverson bracket here.
%e We start by drawing a line of length sqrt(3):
%e ___
%e We take then the first term of the sequence a(1) = 3 this means
%e we turn our drawing turtle 90 degrees to the left and also switch to a length unit of 1.
%e ___|
%e We take the second term from the sequence a(2) = -2 this means
%e we turn our drawing turtle 60 degrees to the right, and we keep the selected line length of 1 unit.
%e /
%e ___|
%e (In this ASCII representation, angles and length units are only symbolically represented and do not match the exact values in the description.)
%o (MATLAB) % See Scheuerle link.
%o (PARI)
%o L(k) = { my(v = [0, 14, 140, 1588]); if(k > 3, return(12*L(k-1) - 7*L(k-2) + L(k-3)), return(v[k+1])) }
%o r1(k) = if(k > 1, return(r5(k-1) + r1(k-1) + r7(k-1)), return(6))
%o r2(k) = if(k > 1, return(r2(k-1) + r7(k-1)), return(6))
%o r3(k) = if(k > 1, return(2*r5(k-1) + r3(k-1) + r5(k) + r7(k-1)), return(6))
%o r5(k) = if(k > 1, return(r5(k-1) + r3(k-1)), return(2))
%o r7(k) = if(k > 1, return(r5(k-1) + 2*r3(k-1)), return(4))
%o r8(k) = if(k > 1, return(r12(k-1) + r8(k-1) + r14(k-1)), return(1))
%o r9(k) = if(k > 1, return(r9(k-1) + r14(k-1)), return(1))
%o r10(k) = if(k > 1, return(2*r13(k-1) + r10(k-1) + r11(k-1) + r14(k-1)), return(1))
%o r11(k) = if(k > 1, return(2*r13(k-1) + 3*r10(k-1) + r11(k-1)), return(1))
%o r12(k) = if(k > 1, return(r13(k-1) + r10(k-1)), return(1))
%o r13(k) = if(k > 1, return(r12(k-1) + r13(k-1) + r14(k-1)), return(1))
%o r14(k) = if(k > 1, return(r13(k-1) + 2*r10(k-1)), return(1))
%o c1(k) = r2(k) + sum(m=1, k-1, r9(k+1-m)*L(m))
%o c2(k) = c1(k) - sum(m=1, k-1, L(m))
%o c3(k) = r2(k) + r3(k) + sum(m=1, k-1, (r9(k+1-m) + r10(k+1-m) - 1)*L(m))
%o c4(k) = r2(k) + r5(k+1) + sum(m=1, k-1, (r9(k+1-m) + r11(k+1-m) - 1)*L(m))
%o c5(k) = r2(k) + r7(k) + sum(m=1, k-1, (r9(k+1-m) + r14(k+1-m) - 2)*L(m))
%o c6(k) = c4(k) - sum(m=1, k-1, L(m))
%o a(NumIter) = { my(a = [3, -2, 3, -2, 3, 2, 0, 2, -3, 2, 3, 2, -3, 2]); for(k = 1, NumIter, a = concat([a, a[1..(c1(k)-1)], -a[c1(k)], a[(c2(k)+1)..L(k)], a[1..(c3(k)-1)], -a[c3(k)], a[(c2(k)+1)..L(k)], a[1..(c3(k)-1)], -a[c3(k)], a[(c2(k)+1)..L(k)], a[1..(c4(k)-1)], -a[c4(k)], a[(c5(k)+1)..L(k)], a[1..(c3(k)-1)], -a[c3(k)], a[(c2(k)+1)..L(k)], a[1..(c3(k)-1)], -a[c3(k)], a[(c2(k)+1)..L(k)], a[1..(c4(k)-1)], -a[c4(k)], a[(c6(k)+1)..L(k)]]) ); return(a) }
%o draw(NumIter) = {my(p = [0, sqrt(3)]); my(dl = [1]); my(s = a(NumIter)); for(j=2, length(s), dl = concat(dl, ((dl[j-1]+(abs(s[j-1])==3))%2)); p = concat(p, p[j]+sqrt(1+2*dl[j])*exp(I*Pi*vecsum(s[1..j-1])*(1/6)) )); plothraw(apply(real, p), apply(imag, p), 1); }
%Y Cf. A363445 describes a curve around the perimeter of this tiling.
%Y Cf. A003500, A003699, A033890, A052530, A061278, A108946.
%K sign
%O 1,1
%A _Thomas Scheuerle_, May 28 2023