Flowly We Rote

As the old mathematical joke goes: A topologist is someone who can’t tell the difference between a coffee-cup and a donut. That’s because topology is, crudely speaking, the branch of geometry that studies shapes when the distance and angle between one part and another doesn’t matter. For example, how can (or can’t) shapes flow smoothly into each other, without being cut or torn or pierced? The shape of a perfectly plastic substance can flow smoothly from that of a coffee-cup into that of a donut. And vice versa:

Topologically speaking, a coffee-cup is the same as a donut (Wikipedia)


That’s topology in three dimensions. I came across some unexpected topology in two dimensions when I was looking at transformations of a triangle — the Sierpiński triangle, a fractal named after the Polish mathematician Wacław Sierpiński (1882-1969):

Sierpiński triangle


I wondered what happened when you rotate the points inside a Sierpiński triangle while the triangular boundary remains fixed. That is, each point stays at the same position in the width between the center and the boundary as the whole interior flows around the center of the triangle:

Points inside a Sierpiński triangle rotated by 1°


Points inside a Sierpiński triangle rotated by 2°


Points inside a Sierpiński triangle rotated by 3°


Points rotated by 4°


Points rotated by 5°


Points rotated by 10°


Points rotated by 20°


Points rotated by 30°


Points rotated by 40°


Points rotated by 50°


Points rotated by 60°


Points rotated by 70°


Points rotated by 80°


Points rotated by 90°


WARNING! If you’re sensitive to flickering images, please note that there are flickering animated gifs below


Here’s the flowing rotation from 0° to 90° animated in a gif:

Interior points of Sierpiński triangle flowing 0° → 90° around center (animated at ezGif)


And here’s the whole rotating flow from 0° to 120° (which maps the points back onto themselves):

Interior points of Sierpiński triangle flowing continuously around center (slow animation)


Interior points flowing continuously around the center (faster animation)


As you can see, the appearance of the Sierpiński triangle changes notably as the points rotate: the rotations aren’t rotationally symmetrical (in the standard sense). Sometimes a rotation looks like a stumpy triskelion, a three-legged shape like the flag of the Isle of Man:

Triskelion on the Manx flag (Wikipedia)


Interior points of a Sierpiński triangle rotated by 30°


But topologically speaking, each rotated triangle is the same (just as, topologically speaking, a coffee-cup is the same as a donut). You can see how they’re topologically the same by imagining that the triangle is stretched into a circle, like this:

Sierpiński triangle

Sierpiński triangle stretched into circle


When you circularize the rotated triangles, all the circularized triangles are rotationally symmetrical:

Points rotated by 30°

Circle from triangle rotated by 30°


Points rotated by 60°

Circle from triangle rotated by 60°


Points rotated by 90°

Circle from triangle rotated by 90°


Here are two animated gifs of the circularized triangles rotating:

Circularized Sierpiński triangle flowing around center (slow animation at ezGif)


Circularized Sierpiński triangle flowing around center (faster animation)


Here’s what I call the centered Sierpiński triangle turned into a circle:

Centered Sierpiński triangle


Circle from centered Sierpiński triangle


And finally, the circularized centered Sierpiński triangle flowly rotating at two speeds:

Circularized centered Sierpiński triangle flowing around center (slow animation at ezGif)


Circularized centered Sierpiński triangle flowing around center (faster animation)


Perverting the Pircle

Here again is the famous Sierpiński triangle, a fractal named after the Polish mathematician Wacław Sierpiński (1882-1969):

A Sierpiński triangle


And here’s a Sierpiński ciangle — my name for a Sierpiński triangle stretched into a circle:

A Sierpiński ciangle or Sierpiński pircle


More generally, you could call that shape a pircle, a polygon turned into a circle. But you can also squeeze the Sierpiński triangle and turn it into this shape:

A Sierpiński squircle


You could call that a squircle, a squeezed circle. You use the same trigonometry to create both the Sierpiński ciangle and the squeezed Sierpiński triangle. Here’s an animated gif showing the Sierpiński triangle cycling between polygon, pircle and squircle:

Sierpiński triangle, pircle and squircle (animated at EZgif)


Now for the Sierpiński carpet, the square analogue of the Sierpiński triangle (you can create it with a point jumping 2/3rds of the way towards the vertices and midpoints of a square, as marked with green dots):

A Sierpiński carpet


And here’s the carpet as a pircle:

Pircle from Sierpiński carpet


Like the Sierpiński triangle, you can both pircularize and squeeze the Sierpiński carpet. Here’s the cycle as an animated gif:

Sierpiński carpet ⇔ pircle and squircle (animated at EZgif)


But you can also pervert the pircle, as it were (in Latin, pervertere means “to thoroughly alter”). For example, what if you flip the radius used in pircularizing the Sierpiński carpet, so that points on the perimeter of the pircle move to the center, and points at the center move to the perimeter? One variant of that perverted pircle looks like this:

Perverted pircle from Sierpiński carpet


Here are some more polygonal fractals turned into pircular fractals:

Fractal from point jumping 1/2 way to vertices of square (but not same vertex twice in a row)

Pircle from square fractal


If you double each point’s distance from the centre, then fold any resulting distance beyond the circle’s radius back inside by halving it, you get this perverted pircle:

Perverted pircle from square fractal


Here’s another polygonal fractal, the T-square fractal:

T-square fractal from point jumping 1/2 way to vertices of square (but not towards vertex directly opposite vertex just jumped towards)

Pircle from T-square fractal


Again, you can pervert the pircle:

Perverted pircle #1 from T-square fractal


Perverted pircle #2 from T-square fractal


Perverted pircle #3 from T-square fractal


Perverted pircles from T-square fractal (animated at EZgif)


Finally, another polygonal fractal turned into a pircle and perverted pircle:

Another square fractal


Pircle from square fractal


Perverted pircle from square fractal


Hopping in Boundland

Shopping in Poundland. That’s what Brits do when they want cheap fills. Hopping in Boundland. That’s what rec-mathers do when they want deep thrills. As I’ve described previously, a point can create interesting geometry by jumping towards fixed vertices inside a polygon. But it can also create interesting geometry by jumping at fixed angles inside a polygon. Suppose a point jumps at 0°, 120° or 240° halfway towards the perimeter of a triangle. It’s bounded in its jumps, so you could say it’s hopping in Boundland. Or bounding in Hopland. Either way, it creates this pattern inside the polygon:

Jumping halfway towards perimeter of triangle at 0°, 120° or 240°


If you stretch the triangle-and-pattern into a circle, you get this (the graphics aren’t as good as they could be, but I’m working on it):

Triangle → circle, 1/2 at 0°, 120° or 240°


You can also introduce restrictions, like banning the point from jumping at the same angle twice in a row:

Ban on same angle twice in a row, 1/2 jump at 0°, 120° or 240°


Triangle → circle, ban j+0, 1/2 jump at 0°, 120° or 240°


If the jump is 2/3rds of the distance to the perimeter and the ban is on the same angle twice, the point generates this pattern by hopping in Boundland:

Triangle, 2/3 jump, ban j+0, 0°, 120° or 240°


Triangle → circle, 2/3 jump, ban j+0, 0°, 120° or 240°


Now try adjusting the angles. Swinging the angles 60° with the same 2/3rd jump and same ban, the point generates this:

Triangle, 2/3 jump, ban j+0, 60°, 180° or 300°


Triangle → circle, 2/3 jump, ban j+0, 60°, 180° or 300°


A point jumping 2/3rds at four angles inside a square generates this pattern:

Square, 2/3 jump, ban j+0, 45°, 135°, 225, 315°


Square → circle, 2/3 jump, ban j+0, 45°, 135°, 225, 315°


And what if the point jumps 5/7ths towards the center of the polygon, not just towards the perimeter? Then it generates this pattern inside a hexagon with a ban on jumping towards the angle adjacent clockwise to the angle it’s just jumped at:

Hexagon, 5/7 jump, ban j+1, 6 angles + center


The point can also jump inside a circle rather than a polygon. Here’s the pattern generating by a point jumping 2/3rds at three angles with a ban on the same jump twice in a row:

Circle, 2/3 jump, ban j+0, 3 angles


And if the point can jump towards the center of the circle too, it generates this pattern:

Circle, 2/3 jump, ban j+0, 3 angles + center


Elsewhere Other-Accessible

Controlled Chaos — a look at points jumping towards vertices, not perimeters

Angular Trerkel

Here’s the famous Sierpiński triangle, a fractal named after the Polish mathematician Wacław Sierpiński (1882-1969):

A Sierpiński triangle


You can create it by following all the possible paths of a point jumping half-way towards the vertices of the triangle. But what if the point can jump towards the center of the triangle too? Then you get another fractal, one that looks like this:

Sierpiński triangle when point can jump towards center of triangle too


Now, as a keyly committed core component of the trans-entitial community, I wondered whether triangles and triangular fractals might identify as other geometrical shapes…

I mean, what’s to stop a triangle identifying as a circle? Nothing. And obvs, if one of the Sierpiński triangles above identifies as a circle, it is a circle — trans-circles are circles (get over it). That is, there’s no need for Sierpiński surgery.

But what if a trans-circular Sierpiński triangle wanted to affirm its circularity with surgery? What would it look like then? Well, you can use elementary trig based on the angles of points within the triangle to stretch it into what might be called a trircle, i.e. a trans-circular triangle that has affirmed its inner circular identity:

A pre-op trans-circular Sierpiński triangle

🡇

A post-op trans-circular Sierpiński triangle or Sierpiński trircle


Sierpiński triangle → Sierpiński trircle (animated at EZgif)


On the other hand, the trircle might be a pre-op trans-triangular circle that has NOT affirmed its inner triangular identity with surgery. It’s complicated. But if we suppose it’s a post-op trans-circle rather than a pre-op trans-triangle, we could nickname it an Angular Trerkel, punning on the name of the great German Bundeskanzlerin Angela Merkel. Here’s the same Sierpiński surgery on the centered Sierpiński triangle (the second fractal looked at above):

A pre-op trans-circular centered Sierpiński triangle

🡇

A post-op trans-circular centered Sierpiński triangle or centered Sierpiński trircle


Centered Sierpiński triangle → centered Sierpiński trircle (animated at EZgif)


Again, the post-op trans-circular centered Sierpiński triangle might in fact be a pre-op trans-triangular centered Sierpiński circle. When it comes to the trans-entitial community, always remember: In dubio, interrogāte entitatem! — “In case of doubt, ask the entity!”

Size Scatters

While I play New Order, let’s view order. Below are some rational fractions ordered by increasing size of denominator (the lower part of the fraction, e.g. the 7 in 3/7) and numerator (the upper part of the fraction, e.g. the 5 in 5/9). Note the positions of 1/2 and 1/7:

1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 2/7, 3/7, 4/7, 5/7, 6/7, 1/8, 3/8, 5/8, 7/8, 1/9, 2/9, 4/9, 5/9, 7/9, 8/9, 1/10, 3/10, 7/10, 9/10

Now let’s plot fractions ordered like that on a fract-L, a graph whose axes represent numbers < 1. If both x and y = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5…, you get a line at 45°:

fract-L for x = 1/2, 1/3, 2/3…, y = 1/2, 1/3, 2/3…


If the fractions went to infinity, you’d get a solid line. As it is, you get some interesting splits in the 45° line. And when you plot the fractions like that, it’s easy to see that each point, (x,y), has a unique x and a unique y. But there are other ways to order the rational fractions. Try the same set ordered by the size of the decimal, not the denominator and numerator. In the previous set, 1/2 came before 1/7. Now 1/2 comes after 1/7, because 0.5 = 1/2 > 0.142857… = 1/7:

1/10, 1/9, 1/8, 1/7, 1/6, 1/5, 2/9, 1/4, 2/7, 3/10, 1/3, 3/8, 2/5, 3/7, 4/9, 1/2, 5/9, 4/7, 3/5, 5/8, 2/3, 7/10, 5/7, 3/4, 7/9, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10

Now let’s plot x as the first set of fractions, ordered by size of denominator-and-numerator, and y as the second set of fractions, ordered by the size of the decimal. You’ll see that this kind of size scatters:

fract-L for x = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5…, y = 1/10, 1/9, 1/8, 1/7, 1/6, 1/5, 2/9…


Now the points aren’t compressed into a 1-d line, but beginning to spread in 2-d space. The more fractions you use, the more the points spread. They remind me of papillae on a fractal tongue:

x = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5… < 1/26, y = sizesort(1/2..1/26)


Papillae on a human tongue (image courtesy chatGPT)


x = denumsort(1/2..1/51), y = sizesort(1/2..1/51)


x = denumsort(1/2..101/), y = sizesort(1/2..1/101)


And the points seem to be occurring at the same x or y value. But that’s an artefact of a screen with limited pixels. On an impossible screen with infinite pixels, each (x,y) still has a unique x and unique y. Here are more fract-Ls with more fractions:

x = denumsort(1/2..1/151), y = sizesort(1/2..1/151)


x = denumsort(1/2..1/201), y = sizesort(1/2..1/201)


x = denumsort(1/2..1/251), y = sizesort(1/2..1/251)


finer detail for x = denumsort(1/2..1/251), y = sizesort(1/2..1/251)


x = denumsort(1/2..37/406), y = sizesort(1/2..37/406)


x = denumsort(1/2..1/501), y = sizesort(1/2..1/501)


Finally, to the closing bars of New Order, let’s view order in an animated gif:

x = denumsort(a/b), y = sizesort(a/b) (animated at EZgif)


Post-Performative Post-Scriptum…

In fact, I wasn’t listening to New Order to view order. I’m not a fan of New Order, just a fan of assonance.

Altars of Mathness

What could be duller than digits? They just sit there on the page or screen, mindlessly marking mathematics:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100…

But perhaps they become more interesting as images. Let’s display the final digit of the integers, or counting numbers, on a graph. Running left-right and up-down, the graph represents the final or rightmost digit of 1, 2, 3, … 10, 11, 12, 13, … 100, 101, 102, 103, …, 1000, 1001, 1002, 1003, …:

Rightmost single digit of the integers (click for larger)


No, that’s still dull: the graph just generates endlessly repeating triangles. After all, the final digits fall into a cycle: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3… So do the final two digits: 1, 2, 3, 4, 5, […] 94, 95, 96, 97, 98, 99, 00, 01, 02, 03… Here they are as a graph:

Rightmost two digits of the integers


Now the triangles look like waves sweeping to shore. That’s a bit more interesting, but not much. So let’s try something different. The trailing digits of the integers generate triangles, so let’s see what the triangular numbers generate. The triangular numbers — 0, 1, 3, 6, 10, 15, 21… — are very simple to form. You just sum the integers: 1, 3 = 1 + 2, 6 = 1 + 2 + 3, 10 = 1 + 2 + 3 + 4, 15 = 1 + 2 + 3 + 4 + 5, 21 = 1 + 2 + 3 + 4 + 5 + 6, 28 = 1 + 2 + 3 + 4 + 5 + 6 + 7, 36 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8, 45 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9, 55 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10… Here are the final digits of the triangulars — 1, 3, 6, 0, 5, 1, 8, 6… — as a graph:

Final digit of triangular numbers in base 10 (click for larger)


Now something interesting has appeared. The final digits form a repeated palindromic pattern (counting 0 as the zero-th triangular number):

0, 1, 3, 6, 0, 5, 1, 8, 6, 5, 5, 6, 8, 1, 5, 0, 6, 3, 1, 0, 0, 1, 3, 6, 0, 5, 1, 8, 6, 5, 5, 6, 8, 1, 5, 0, 6, 3, 1, 0, 0, 1, 3, 6, 0, 5, 1, 8, 6, 5, 5, 6, 8, 1, 5, 0, 6, 3, 1, 0, 0, 1, 3, 6, 0, 5, 1, 8, 6, 5, 5, 6, 8, 1, 5, 0, 6, 3, 1, 0, …

An Altar of Mathness created by the final digit of triangular numbers in base 10


And those palindromic digits create symmetric shapes that remind me of little altars — let’s call them “altars of mathness” in tribute to Morbid Angel’s genre-defining album Altars of Madness (1989). And what about the final two digits of the triangular numbers? Here’s the graph (adjusted so that 99 fits into the same space as 9):

Final two digits of triangulars in b10


Final two triangular digits in b10 (horizontal scale compressed)


The final two digits form palindromes too. And this time we don’t get just triangles, but curves too. But that’s in base 10. What happens with the trailing triangular digits in other bases? Well, here’s the final triangular digit creating more altars of mathness in different bases (note that the altars are more elaborate in even bases):

Final triangular digit in base 4


Final triangular digit in b5


Final triangular digit in b6


Final triangular digit in b7


Final triangular digit in b8


Final triangular digit in b9


Final triangular digit in b14


And here’s the graph for the final triangular digit in base 100:

Final triangular digit in b100


The graph for final single digit in b100 should look familiar, because it’s identical to the graph for final double triangular digits in b10:

Final two digits of triangulars in b10


That’s because two digits in b10 are equivalent in one digit in b100, four digits in b10 are equivalent to two digits in b100, and so on. But b100 can’t capture three digits in b10 (the graph is again adjusted so that 999 fits into the same space as 9 and 99 above):

Final three triangular digits in b10


If you compress the x-axis for that graph, you can see how long the symmetries are:

Final three triangular digits in b10 (x-axis / 2)


Final three triangular digits in b10 (x-axis / 4)


The final four digits of the triangulars in b10 create even longer symmetries:

Final quadruple triangular digits in b10


Final quadruple triangular digits in b10 (x-axis / 2)


Final quadruple triangular digits in b10 (x-axis / 8)


Note how, as the length of the final digits rises, you need to compress the x-axis more and more to see the symmetries. But integer sequences obviously don’t end with the counting numbers and triangulars. What about squares and powers of n? What about primes and Fibonacci numbers? Here’s the final two digits of the squares — 1, 4, 9, 16, 25, 49, 64, 81, 100, 121, 144, 169… — in b10:

Final two digits of the squares in b10


It’s reminiscent of the triangular numbers (so are the final-digit graphs for other polygonal numbers). So what about the powers of 2? That’s 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024… Here’s the graph for final single digits of 2^p in b10:

Final single digits of 2^p in b10


This time there’s repetition, but not symmetry. Here’s the graph for final double digits, or 2-digits, of 2^p in b10:

Final 2-dig of 2^p in b10


Now the graph looks a little like a range of eroded mountains. Now try dig-4, the final four digits of 2^p in b10:

Final 4-dig of 2^p in b10


The patterns are similar to those of dig-2 and don’t need compressing in the x-axis. This similarity and lack of need for compression are true of any number of final digits in 2^p. The final 10 digits look like this:

Final 10-dig of 2^p in b10


And the final 20 and 30 digits like this:

Final 20-dig of 2^p in b10


Final 30-dig of 2^p in b10


Powers don’t behave like polygonals: the finals are fractals. That is, the final digits create similar patterns at all scales: 1-dig, 2-dig, 10-dig, 100-dig, 1000-dig and so on. That’s true in other bases:

Final 5-dig of 3^p in b2


But a glimpse of b2 is all you’re going to get of other bases. There are other fish to fry — Fibonacci fish. The Fibonacci sequence, whose terms are equal to the sum of the previous two numbers (after seeding with “1, 1”), starts like this: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811… And what about the graphs for final fib-digits? As you’ll see, final Fib-digits are fractal too. Indeed, Fibonacci final-graphs look like 2-power final-graphs (in a way, Fibonacci numbers are powers of φ = 1.6180339887498948482…). The patterns are similar at all scales. And they remind me of the skyline of a ruined city in an Oriental tale, with collapsed domes and crumbling minarets:

Final 1-dig of Fibonacci numbers in b10


Final 2-fibdig in b10


Final 3-fibdig in b10


Final 4-fibdig in b10


Final 5-fibdig in b10


Final 10-fibdig in b10


Final 15-fibdig in b10


Final 20-fibdig in b10


Final 25-fibdig in b10


So final fibdigs are fractal. But final prime digits aren’t:

Final 1-digit of primes in b10


Final 1-digit of primes in b5


Final 2-digit of primes in b10


Primes aren’t final-digitally fractal like Fibonaccis and powers of 2. But there’s occasional symmetry in the prime fin-digs. I’ve marked some palindromic patterns in red and green:

Palindromic patterns in final 1-digits of the primes in b10 (click for larger)


The palindromic patterns, or pal-pats, in the primes look like the altars of mathness in the triangulars. They’re created by digital palindromes like these:

19, 23, 29 (c=3)
347, 349, 353, 359, 367 (c=5)
937, 941, 947, 953, 967, 971, 977 (c=7)
1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011 (c=9)
26423, 26431, 26437, 26449, 26459, 26479, 26489, 26497, 26501, 26513 (c=10)


Here are the first few pal-pats in the primes (note that 157, 163, 167 and 163, 167, 173 overlap):

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607…

And are there palindromes among the final 2-digits, 3-digits and higher n-digits of the primes in different bases? Yes, you can easily find some. But I haven’t put them on a graph yet:

Base 10 (2-dig)

58789, 58831, 58889 (c=3)
286873, 286927, 286973 (c=3)
360649, 360653, 360749 (c=3)
404851, 404941, 404951 (c=3)
590437, 590489, 590537 (c=3)
623071, 623107, 623171 (c=3)
651517, 651587, 651617 (c=3)


Base 6 (2-dig)

300335, 300401, 300441, 300501, 300535 (c=5) (23459 to 23531 in base 10)
1030255, 1030331, 1030351, 1030431, 1030455 (c=5) (50651 to 50723 in b10)
1140451, 1140501, 1140521, 1141001, 1141051 (c=5) (59791 to 59863 in b10)
1402451, 1402545, 1403031, 1403045, 1403051 (c=5) (78367 to 78439 in b10)
1435431, 1435451, 1435505, 1435551, 1440031 (c=5) (82891 to 82963)
2400505, 2401001, 2401015, 2401101, 2401105 (c=5) (124601 to 124673)
2442235, 2442311, 2442351, 2442411, 2442435 (c=5) (130127 to 130199)
2444215, 2444225, 2444311, 2444325, 2444415 (c=5) (130547 to 130619)
2533105, 2533121, 2533215, 2533221, 2533305 (c=5) (136769 to 136841)


Base 4 (3-dig)

20013013, 20013133, 20020013 (c=3) (33223 to 33287 in base 10)
21031111, 21031303, 21032111 (c=3) (37717 to 37781)
22310011, 22310333, 22311011 (c=3) (44293 to 44357)
33030121, 33031001, 33031121 (c=3) (62233 to 62297)
102031333, 102032131, 102032333 (c=3) (74623 to 74687)
110013121, 110013311, 110020121 (c=3) (82393 to 82457)


Base 3 (3-dig)

112121020012, 112121021211, 112121022021, 112121100211, 112121101012 (c=5) (287393 to 287501 in base 10)
202002212002, 202002212101, 202002220001, 202002221101, 202010000002 (c=5) (395741 to 395849)
1001012111212, 1001012112202, 1001012121022, 1001012121202, 1001012122212 (c=5) (555143 to 555251)
1010112112012, 1010112112201, 1010112120222, 1010112121201, 1010112200012 (c=5) (601079 to 601187)
1011202211211, 1011202212212, 1011202220022, 1011202221212, 1011202222211 (c=5) (625369 to 625477)


Base 2 (5-dig)

101110001111101, 101110010000111, 101110010001001, 101110010100111, 101110010111101 (c=5) (23677 to 23741 in base 10)
10000001000111101, 10000001001011001, 10000001001110001, 10000001001111001, 10000001001111101 (c=5) (66109 to 66173)
10111100110011011, 10111100110011111, 10111100110111001, 10111100110111111, 10111100111011011 (c=5) (96667 to 96731)
11010000111110001, 11010001000001101, 11010001000011001, 11010001000101101, 11010001000110001 (c=5) (106993 to 107057)

And I conjecture that you’ll get palindromes for any number of final digits in all bases. And can these palindromes be of arbitrary length? Again, I conjecture so. There are infinitely many primes and very rare patterns can occur infinitely often in an infinite set of numbers.


Post-Performative Post-Scriptum

Here’s Dan Seagrave’s classic cover for Morbid Angel’s Altars of Madness (1989):


Morbid Angel — official website
Dan Seagrave — official website


Elsewhere Other-Accessible…

Formulas Focal to the Flesh — a pre-previous post paronomasizing the title of a Morbid-Angel album…

The Hex Crystals

To coin a phrase: Never Mind the Bollocks — Here’s the Hex Crystals! And what is a hex crystal? It’s what I call a shape that’s created algorithmo inside a hexagon and looks like a crystal:

A hex crystal


Here are some more hex-crystals:




I came across hex-crystals when I was looking at an interesting little geometrical question. How does sum(vd), the sum of distances to the vertices of a square, vary from different points, (x,y), inside the square? Say the square is created inside a circle of radius = 500 units and centered on (x,y) = (0,0). When the point is at (0,0), the center of the square, sum(vd) is obviously 2000, because the four vertices all fall on the perimeter of the circle at 500 units from the center and 4 * 500 = 2000:
0

sum(vd) = 2000 = sum of distances to vertices from (0,0)


When is sum(vd) at a maximum? When the point is on one or another of the vertices, which are at (+/-354,+/-354) units in relation to the center at (0,0):

sum(vd) = 2414 = sum of distances to vertices from (354,-354)


More precisely, the sum is 2414.213562373… = 1000 * (√2 + 1) units and the vertices are at (+/-353.55339…, +/-353.55339…) units, as simple geometry dictates for a square inside a circle of radius 500. Accordingly, sum(vd) varies between exactly 2000 and 2414.213562373… as the point moves inside the square:

sum(vd) = 2165 from (132,256)


sum(vd) = 2182 from (-135,271)


sum(vd) = 2069 from (177,51)


I wondered what shapes appeared as one traced the route of a point jumping, say, 1/2 towards the vertices according to tests on sum(vd). For example, if the point starts at (0,0) at time t0) and sum(vd) at time ti has to be alternately greater and less than sum(vd) at ti-1 for successive jumps, you get this shape:

jump = 1/2, test = sum(vd,ti) >,< sum(vd,ti-1)


You can use the binary number 10bin to represent the test on sum(vd) at ti-1 and ti-1, i.e. the test at jump 1 is sum(vd,ti) > sum(vd,ti-1), at step 2 is sum(vd,ti) < sum(vd,ti-1), and so on. Using the same test and a jump of 1/3, you get this shape:

jump = 1/3, test = sum(vd,ti,10bin)


Now the shape is clearly a fractal. So are some of the other shapes I found by applying the same kind of tests to a point jumping inside a pentagon:

vertex = 5, jump = 55/144 = fib(10) / fib(12), test on sum(vd) = 10bin


v = 5, j = 55/144, test = 10010bin


v = 5, j = 55/144, test = 11000bin


When test = 10010bin, you read the binary number left-to-right and check for s1><s0,s2<s1,s3<s2,s4>s3,s5<s4. Then you apply the same tests to subsequent jumps, i.e., you return to the beginning of the binary number and read it left-to-right again. Now let’s apply similar tests to hexagons and create some hex-crystals:

v = 6, j = 1/2, test = 10bin


Various hex-crystals (animated gif courtesy EZgif)


I searched an array to calculate the possible routes, so the same test yielded different results depending on dp, the depth of the search. This is because tl, the length of the test, fits more or less well into dp by dp modulo tl, that is, by whether tl is a factor of dp. For example, when the test is 110 and tl = 3, you get this with dp = 9:

v = 6, j = 1/2, test = 110, dp = 9


And you get this when dp = 10 (i.e., dp = 9+1):

v = 6, j = 1/2, test = 110bin, dp = 10dec


Here are some more hex-crystals:

test = 1100bin


test = 1110bin


test = 10010bin


test = 11010bin


test = 11100bin


test = 101000, dp = 12


test = 101100bin


test = 111100bin


test = 111100, dp = 11


test = 1110010bin


test = 1111100bin


test = 10010110bin


test = 10011110bin


test = 11000110bin


test = 11001110bin


test = 11010110bin


test = 11100110bin


test = 11101000bin


test = 11110010bin


test = 100101000bin


test = 100111110bin


test = 110011110bin


test = 110111000bin


test = 1001101010bin


test = 1001111000bin


test = 1001111010bin


test = 1010011110bin


test = 1011101110bin


test = 1101010000bin


test = 1110001110bin


test = 1110101000bin


test = 1110101010bin


test = 1111100010bin


j = 1/3, test = 1 (i.e., for all jumps sum(vd) at ti > sum(vd) at ti-1, center point


j = 2/3, test = 11100bin


j = 2/5, test = 10010bin


Finally, here are some hex-crystals based on a test of sorted distances from (x,y), i.e. how the vertices rank by distance from (x,y):




Worms in Terms of Perms

If you go back far enough, we’re all worms. All us animals, that is. But in a subtler sense, all life is vermiform — animals, plants, fungi, bacteria. DNA is a kind of worm, a string of chemicals encoding the recipe for an animal, plant, fungus or bacterium. And the worms of DNA can be turned into numbers, just as some numbers can be turned into worms:

3/7 = 0·0.428571428571428571428571…
154/183 = 0.841530054644808743169398907…
√2 = 1.414213562373095048801688…
π = 3.1415926535897932384626433…

Those are decimals, but there’s another kind of worm for such numbers. It’s called a continued fraction:

contfrac(3/7) = [0,2,3]
contfrac(154/183) = [0,1,5,3,4,2]
contfrac(√2) = [1,2,2,2,2,2…]
contfrac(π) = [3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2, 1, 84, 2, 1, 1, 15…]

Extracting and enacting continued fractions is very simple. Here’s the extracting:

3/7 → 1/(3/7) = 7/3 = 2+1/3 – 2 = 1/3 → 1(1/3) = 3, ∴ contfrac(3/7) = [0,2,3]
154/183 → 1/(154/183) = 183/154 = 1 + 29/154 – 1 = 29/154 → 1/(29/154) = 154/29 = 5 + 9/29 – 5 = 9/29 → 1/(9/29) = 29/9 = 3 + 2/9 – 3 = 2/9 → 1/(2/9) = 9/2 = 4 + 1/2 – 4 = 1/2 → 1/(1/2) = 2 – 2 = 0, ∴ contfrac(154/183) = [0,1,5,3,4,2]

And here’s the enacting:

[0,2,3] → 3 → 1/3 → 1/3 + 2 = 7/3 → 1/(7/3) = 3/7
[0,1,5,3,4,2] → 2 → 1/2 → 1/2 + 4 = 9/2 → 2/9 + 3 = 29/9 → 9/29 + 5 = 154/29 → 29/154 + 1 = 183/154 → 1/(183/154) = 154/183

Once you’ve got the worm of a continued fraction, you can perm the worm, as it were, generating different fractions like this (I’m dropping the initial [0,…] of the contfracs):

[2,3,4] = contfrac(13/30)
[2,4,3] → 13/29
[3,2,4] → 09/31
[3,4,2] → 09/29
[4,2,3] → 07/31
[4,3,2] → 07/30

Reversing a continued fraction is a kind of permutation, so the fractal below represents one kind of worms in terms of perms:

Variant of a limestone fractal or gryke fractal


I call that graph a fract-L, because it’s shaped like an L and the x axis represents the simplified fractions 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5…, while the y axis represents the fractions you get by reversing the continued fractions of 1/2, 1/3, 2/3…:

contfrac(1/2) = [2] → 1/2
contfrac(1/3) = [3] → 1/3
contfrac(2/3) = [1,2] → 1/3
contfrac(1/4) = [4] → 1/4
contfrac(3/4) = [1,3] → 1/4
contfrac(1/5) = [5] → 1/5
contfrac(2/5) = [2,2] → 2/5
contfrac(3/5) = [1,1,2] → 2/5
contfrac(4/5) = [1,4] → 1/5
contfrac(1/6) = [6] → 1/6
contfrac(5/6) = [1,5] → 1/6
contfrac(1/7) = [7] → 1/7
contfrac(2/7) = [3,2] → 3/7
contfrac(3/7) = [2,3] → 2/7
contfrac(4/7) = [1,1,3] → 2/7
contfrac(5/7) = [1,2,2] → 3/7
contfrac(6/7) = [1,6] → 1/7
contfrac(1/8) = [8] → 1/8
contfrac(3/8) = [2,1,2] → 3/8
contfrac(5/8) = [1,1,1,2] → 3/8
contfrac(7/8) = [1,7] → 1/8
contfrac(1/9) = [9] → 1/9
contfrac(2/9) = [4,2] → 4/9
contfrac(4/9) = [2,4] → 2/9
contfrac(5/9) = [1,1,4] → 2/9
contfrac(7/9) = [1,3,2] → 4/9
contfrac(8/9) = [1,8] → 1/9
[…]

If you perm the worm in other ways, you get other shapes on the fract-L. I looked at continued fractions of fixed length, 4, 5 and 6, and permed them using one of the permutations of [1,2,3,4], [1,2,3,4,5] and [1,2,3,4,5,6]. Here’s a graph for fractions, a/b, and permed fractions, perm(a/b), where length(contfrac(a/b)) = 4:

x = a/b when length(contfrac(a/b)) = 4, y = fraction from contfrac(a/b) permed with [1,3,2,4]


The x axis represents simplified fractions, a/b, when len(cf(a/b)) = 4. The y axis represents the fractions found by applying the perm [1,3,2,4] to contfrac(a/b). That is, the first number of the contfrac stays where it is, the third number moves to position 2, the second number moves to position 3 and the fourth number stays where it is. In short, you simply swap the middle two numbers of contfrac(a/b). Here’s an example:

contfrac(9/43) = [4,1,3,2] → [4,3,1,2] → 11/47, because contfrac(11/47) = [4,3,1,2]

Here are more fract-Ls representing worms in terms of perms:

fract-L for contfrac(a/b) permed by [2,1,3,4]


fract-L for contfrac(a/b) permed by [3,2,1,4]


fract-L for contfrac(a/b) permed by [1,4,2,3,5] (i.e. a/b where len(contfrac(a/b)) = 5)


fract-L for contfrac(a/b) permed by [1,5,3,4,2]


fract-L for contfrac(a/b) permed by [2,1,4,3,5]


fract-L for contfrac(a/b) permed by [3,4,1,2,5]


fract-L for contfrac(a/b) permed by [4,2,3,1,5]


fract-L for contfrac(a/b) permed by [4,2,5,3,1]


fract-L for contfrac(a/b) permed by [4,3,2,1,5]


fract-L for contfrac(a/b) permed by [5,3,4,2,1]


fract-L for contfrac(a/b) permed by [2,1,4,3,5,6] (i.e. a/b where len(contfrac(a/b)) = 6)


fract-L for contfrac(a/b) permed by [2,1,5,4,3,6]


fract-L for contfrac(a/b) permed by [3,2,1,4,5,6]


fract-L for contfrac(a/b) permed by [3,2,1,5,4,6]


fract-L for contfrac(a/b) permed by [3,5,1,4,2,6]


fract-L for contfrac(a/b) permed by [4,2,5,1,3,6]


fract-L for contfrac(a/b) permed by [4,3,2,1,5,6]


fract-L for contfrac(a/b) permed by [4,5,2,3,1,6]


fract-L for contfrac(a/b) permed by [1,3,2,6,5,4,7] (i.e. a/b where len(contfrac(a/b)) = 7)


fract-L for contfrac(a/b) permed by [1,5,2,6,3,4,7]


fract-L for contfrac(a/b) permed by [5,6,3,7,4,1,2]


fract-L for contfrac(a/b) permed by [6,2,3,5,4,1,7]


fract-L for contfrac(a/b) permed by [6,2,5,4,7,3,1]


Post-Performative Post-Scriptum

Much as I hate the phrase “in terms of”, I was happy to use it in the title of this post. After all, it isn’t ugly but assonant there. And it began life in mathematics, where it still has its proper meaning rather than being pretentious and prolix:

How did this complex preposition come into being? The OED [Oxford English Dictionary] reveals that it has been in use since the mid-18c. as a mathematical expression “said of a series…stated in terms involving some particular (my emphasis) quantity”, and illustrates this technical usage by citing examples from the work of Herbert Spencer (1862), J. F. W. Herschel (1866), and other writers. From this technical use came at first a trickle and, after the 1940s, a flood of imitative uses by non-mathematicians. — “Terminal Trinity


Elsewhere Other-Engageable

A Fracteasel on a Fract-L — an earlier look at continued fractions and fractal fract-Ls

A FracTeasel on a Fract-L

Here are two new fractals, both of which remind me of the seedheads of the wildflower known as a teasel, Dipsacus fullonum:

A FracTeasel fractal


Dried seedheads of teasel, Dipsacus fullonum (Wikipedia)


Another FracTeasel fractal (embedded in the first)


Flowering seedhead of teasel, Dipsacus fullonum (Wikipedia)


How do you create the two FracTeasels? Let’s look first at the fractal they’re inspired by. In “Back to Frac’” I talked about this fractional fractal, a variant of what I call the limestone fractal:

Variant of a limestone fractal or gryke fractal


It’s a fractal on a fract-L, that is, the x and y co-ordinates of the red L represent pairs of fractions generating decimals between 0 and 1. The x represents the fractions a1/b1 = 1/n to (n-1)/n in simplest form: 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 2/7, 3/7, 4/7, 5/7, 6/7, 1/8, 3/8, 5/8, 7/8,…

And what about the y? It represents the fraction found by taking the continued fraction of a1/b1, reversing it, and generating a new fraction, a2/b2, from the reversal. For example, here’s the continued fraction of a1/b1 = 3/23 = 0.1304347826…:

contfrac(3/23) = 7,1,2

The continued fraction of a1/b1 = 3/23 is used like this to reconstruct a1/b1:

7,1,2

0 → 1 / (0 + 2) = 1/2 → 1 / (1/2 + 1) = 2/3 → 1 / (7 + 2/3) = 3/23

Now reverse the continued fraction, 7,1,2 → 2,1,7, and generate a2/b2:

2,1,7

0 → 1 / (0 + 7) = 1/7 → 1 / (1/7 + 1) = 7/8 → 1 / (2 + 7/8) = 8/23 = 0.3478260869565…

The limestone fractal above appears when a1/b1 → a2/b2 for a1/b1 = 1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 2/7, 3/7, 4/7, 5/7, 6/7, 1/8, 3/8, 5/8, 7/8,… But you can do other things to contfrac(a1/b1) beside just reversing it. What about the permutations of contfrac(a1/b1), for example? If length(contfrac(a1/b1)) = n, the permutations can generate up to n! (factorial n) new a2/b2 for the y co-ordinate (if all the numbers of contfrac(a1/b1) are different, you’ll get n! permutations). The resultant fractal is the first of the FracTeasels above (note that a2/b2 isn’t multiplied by two):

FracTeasel #1 from fract-L for y = perm(contfrac(a1/b1))


If you think about it, you’ll see that the fractal from permed contfrac(a1/b1) contains the fractal from reversed contfrac(a1/b1). It also contains the second FracTeasel:

FracTeasel #2


How so? Because the second FracTeasel — let’s call it the stemmed FracTeasel — is created by shifting some numbers in contfrac(a1/b1) and leaving others alone. For example:

contfrac(940/1089) = 1, 6, 3, 4, 5, 2 → 1, 4, 3, 2, 5, 6 = contfrac(1008/1243)

So the function is finding one particular permutation of contfrac(a1/b1) to generate a2/b2, not all permutations. And so the function creates the stemmed FracTeasel, which carries an infinite number of seedheads on the same stem. To show that, here’s an animated gif zooming in on the bend of the fract-L for the stemmed FracTeasel:

Zooming the FracTeasel (animated at ezGif)


Elsewhere Other-Accessible…

I Like Gryke — a first look at the limestone fractal
Lime Time — more on the limestone fractal