login
A363348
Turn sequence of a non-Eulerian path for drawing an infinite aperiodic tiling based on the "hat" monotile. See the comments section for details.
2
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, -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, -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
OFFSET
1,1
COMMENTS
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).
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.
LINKS
David Smith, Joseph Samuel Myers, Craig S. Kaplan, and Chaim Goodman-Strauss, An aperiodic monotile, arXiv:2303.10798 [math.CO], 2023.
Thomas Scheuerle, MATLAB program
Thomas Scheuerle, 1st iteration: drawing of a(1..140) (results in 8 "hat" tiles).
Thomas Scheuerle, 2nd iteration: drawing of a(1..1588) (results in 55 "hat" tiles).
Thomas Scheuerle, 3rd iteration: drawing of a(1..206104) (results in 377 "hat" tiles).
Thomas Scheuerle, 4th iteration: drawing of a(1..2462272) (results in 2584 "hat" tiles).
FORMULA
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:
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:
L(k) = 12*L(k-1) - 7*L(k-2) + L(k-3) for k > 3 with L(1..3) = {14, 140, 1588}.
r1(k) = r5(k-1) + r1(k-1) + r7(k-1), with r1(1) = 6.
r2(k) = r2(k-1) + r7(k-1), with r2(1) = 6.
r3(k) = 2*r6(k-1) + r3(k-1) + r4(k-1) + r7(k-1), with r3(1) = 6 (A003699).
r4(k) = r5(k+1) = 2*r5(k-1) + 3*r3(k-1) + r4(k-1), with r4(1) = 8 (A052530).
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.
r6(k) = r5(k) = r5(k-1) + r6(k-1) + r7(k-1), with r6(1) = 2 (A052530).
r7(k) = r6(k-1) + 2*r3(k-1), with r7(1) = 4 (A003500).
r8(k) = r12(k-1) + r8(k-1) + r14(k-1), with r8(1) = 1
r9(k) = r9(k-1) + r14(k-1), with r9(1) = 1.
r10(k) = 2*r13(k-1) + r10(k-1) + r11(k-1) + r14(k-1), with r10(1) = 1 (A061278).
r11(k) = 2*r13(k-1) + 3*r10(k-1) + r11(k-1), with r11(1) = 1.
r12(k) = r13(k-1) + r10(k-1), with r12(1) = 1.
r13(k) = r12(k-1) + r13(k-1) + r14(k-1), with r13(1) = 1.
r14(k) = r13(k-1) + 2*r10(k-1), with r14(1) = 1 (A108946 unsigned).
c1(k) = r2(k) + Sum_{m=1..k-1} (r9(k+1-m)*L(m)) = {6, 38, 374, 4204, ...}.
c2(k) = c1(k) - Sum_{m=1..k-1} L(m) = {6, 24, 220, 2462, ...}.
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, ...}.
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, ...}.
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, ...}.
c6(k) = c4(k) - Sum_{m=1..k-1} L(m) = {14, 124, 1396, 15888, ...}.
Description of curve position:
OrientationAngle(n) = Sum_{k = 1..n-1} a(k)*Pi*(1/6).
Xcoordinate(n) = Sum_{k = 1..n} cos(OrientationAngle(n))*sqrt(1 + 2*((1 + Sum_{k = 1..n-1} [abs(a(k)) = 3]) mod 2)).
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.
EXAMPLE
We start by drawing a line of length sqrt(3):
___
We take then the first term of the sequence a(1) = 3 this means
we turn our drawing turtle 90 degrees to the left and also switch to a length unit of 1.
___|
We take the second term from the sequence a(2) = -2 this means
we turn our drawing turtle 60 degrees to the right, and we keep the selected line length of 1 unit.
/
___|
(In this ASCII representation, angles and length units are only symbolically represented and do not match the exact values in the description.)
PROG
(MATLAB) See link.
(PARI)
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])) }
r1(k) = if(k > 1, return(r5(k-1) + r1(k-1) + r7(k-1)), return(6))
r2(k) = if(k > 1, return(r2(k-1) + r7(k-1)), return(6))
r3(k) = if(k > 1, return(2*r5(k-1) + r3(k-1) + r5(k) + r7(k-1)), return(6))
r5(k) = if(k > 1, return(r5(k-1) + r3(k-1)), return(2))
r7(k) = if(k > 1, return(r5(k-1) + 2*r3(k-1)), return(4))
r8(k) = if(k > 1, return(r12(k-1) + r8(k-1) + r14(k-1)), return(1))
r9(k) = if(k > 1, return(r9(k-1) + r14(k-1)), return(1))
r10(k) = if(k > 1, return(2*r13(k-1) + r10(k-1) + r11(k-1) + r14(k-1)), return(1))
r11(k) = if(k > 1, return(2*r13(k-1) + 3*r10(k-1) + r11(k-1)), return(1))
r12(k) = if(k > 1, return(r13(k-1) + r10(k-1)), return(1))
r13(k) = if(k > 1, return(r12(k-1) + r13(k-1) + r14(k-1)), return(1))
r14(k) = if(k > 1, return(r13(k-1) + 2*r10(k-1)), return(1))
c1(k) = r2(k) + sum(m=1, k-1, r9(k+1-m)*L(m))
c2(k) = c1(k) - sum(m=1, k-1, L(m))
c3(k) = r2(k) + r3(k) + sum(m=1, k-1, (r9(k+1-m) + r10(k+1-m) - 1)*L(m))
c4(k) = r2(k) + r5(k+1) + sum(m=1, k-1, (r9(k+1-m) + r11(k+1-m) - 1)*L(m))
c5(k) = r2(k) + r7(k) + sum(m=1, k-1, (r9(k+1-m) + r14(k+1-m) - 2)*L(m))
c6(k) = c4(k) - sum(m=1, k-1, L(m))
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) }
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); }
CROSSREFS
Cf. A363445 describes a curve around the perimeter of this tiling.
Sequence in context: A279124 A101406 A363445 * A245219 A097509 A095206
KEYWORD
sign
AUTHOR
Thomas Scheuerle, May 28 2023
STATUS
approved