From 1d0df50149dcd633ee4c809d8658464b72d231dc Mon Sep 17 00:00:00 2001 From: queue-miscreant Date: Wed, 26 Mar 2025 22:16:58 -0500 Subject: [PATCH] add logos --- .../3/index/execute-results/html.json | 4 +- .../3/index/figure-html/cell-7-output-1.png | Bin 26603 -> 13267 bytes _quarto.yml | 6 +- index.qmd | 4 +- logo-vector.svg | 55 ++++++++++++++++++ logo.png | Bin 0 -> 408 bytes posts/polycount/3/index.qmd | 2 +- 7 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 logo-vector.svg create mode 100644 logo.png diff --git a/_freeze/posts/polycount/3/index/execute-results/html.json b/_freeze/posts/polycount/3/index/execute-results/html.json index ac740ba..48cf5ee 100644 --- a/_freeze/posts/polycount/3/index/execute-results/html.json +++ b/_freeze/posts/polycount/3/index/execute-results/html.json @@ -1,8 +1,8 @@ { - "hash": "db9082462bd0496a6f94d531a02b794b", + "hash": "ebb7f9d9c8567405648e0241ed30d0b5", "result": { "engine": "jupyter", - "markdown": "---\ntitle: \"Polynomial Counting 3: The third degree\"\ndescription: |\n Interesting results on simple irrational counting systems involving only zero and one.\nformat:\n html:\n html-math-method: katex\ndate: \"2021-02-06\"\ndate-modified: \"2025-02-08\"\njupyter: python3\ncategories:\n - algebra\n - phinary\n - binary\n - python\ncode-fold: true\n---\n\n\n\n\n\nThis post assumes you have read the [first](../1) post, which introduces generalized positional counting,\n and the [second](../2), which restricts the focus and specifies the general aim.\n\nThus far, the systems have been based on quadratic polynomials and two-term linear recurrences,\n or more directly, carries of width two.\nNumbers larger than one introduce certain complications to carries.\nWith that in mind, let's go back to things closer to phinary and Fibonacci.\n\n\nTribonacci and Beyond\n---------------------\n\nThe *Tribonacci numbers* ([OEIS A000073](http://oeis.org/A000073)) come from elongating the\n Fibonacci recurrence to 3 terms.\nIn other words, this is the carry/recurrence $\\langle 1,1,1|$.\nThe Tribonacci numbers are seeded with two zeros followed by a single one;\n thus, the sequence begins $0, 0, 1, 1, 2, 4, 7, 13,\\dots$\nThe *Tribonacci constant* is the limiting ratio of these numbers\n (i.e., the positive real root of $x^3 - x^2 - x - 1$) with approximate value $T = 1.8393\\dots$\n\nThe number two bounds both this number and the terms in the recurrence, so its expansion can be deduced:\n\n$$\n\\textcolor{red}{2} = 1.\\textcolor{red}{111}_T = \\textcolor{blue}{1.11}1_T = \\textcolor{blue}{1}0.001_T\n$$\n\nNaturally, the string \"111\" will be illegal in both systems.\nThe Tribonacci expansions of the integers are as follows:\n\n:::: {.row .text-center width=\"60%\"}\n::: {#canonical-tribonacci-table .column}\n\n| *n* (Decimal) | *n* (base $T$) | *n* (Tribonacci) |\n|--------------:|:--------------:|------------------|\n| 0 | 0 | 0 |\n| 1 | 1 | 1 |\n| 2 | 10.001 | 10 |\n| 3 | 11.001 | 11 |\n| 4 | 100.100011 | 100 |\n| 5 | 101.100011 | 101 |\n| 6 | 110.101011 | 110 |\n| 7 | 1000.101011 | 1000 |\n| 8 | 1001.101011 | 1001 |\n| 9 | 1010.110100011 | 1010 |\n| 10 | 1100.010100011 | 1011 |\n\n:::\n::::\n\nSince \"111\" is a rarer string than \"11\", the integral base more closely resembles standard binary.\n\nExtensions of the Fibonacci numbers, which have an $n$-term recurrence\n (seeded with $n - 1$ zeroes followed by a one) are called \"n-nacci\" or \"n-bonacci\" numbers.\nIf we discard the seeding terms, then for larger and larger *n*, this sequence of sequences appears\n to approach the powers of two.\n\n$$\n\\begin{matrix}\n \\text{Fibonacci: } & & & 0,& 1,& 1,& 2,& 3,& 5,& 8\\dots \\\\\n \\text{Tribonacci: } & & 0,& 0,& 1,& 1,& 2,& 4,& 7,& 13\\dots \\\\\n \\text{Tetranacci: } & 0,& 0,& 0,& 1,& 1,& 2,& 4,& 8,& 15\\dots \\\\\n \\vdots \\\\\n \\text{Binary: } & (\\dots,& 0,& 0,& 1,)& 1,& 2,& 4,& 8,& 16\\dots\n\\end{matrix}\n$$\n\nIn the limit, the rightmost and leftmost \"1\"s in the carry $\\langle 1, 1, ..., 1, 1 |$ are\n infinitely far away from each other.\nThis is similar to binary, in which $2 = 1.1111\\dots_2$.\nThis argument is clearer if we directly manipulate the carry as a polynomial $p_n(x)$:\n\n$$\n\\begin{align*}\np_n &= x^n - x^{n-1} - … - x - 1 \\\\\n-p_n &= -x^n + x^{n-1} + … + x + 1 \\\\\nx^n - p_n &= x^{n-1} + … + x + 1 \\\\\nx - p_n x^{-n+1} &= 1 + x^{-1} + … x^{-n+2} + x^{-n+1} \\\\[8pt]\n\\text{Let } n &\\rightarrow \\infty \\\\\nx &= 1 + x^{-1} + x^{-2} + x^{-3} + …\n\\end{align*}\n$$\n\nSince both *φ* and $T$ are greater than 1, we can assume that $x > 1$, which causes the\n $x^{-n+1}$ term to vanish in the limit.\nUnfortunately, this means $p_n$ should diverge, invalidating the above argument.\n\nIgnoring this, the last line can be manipulated as a power series:\n\n$$\n\\begin{align*}\n\\frac{1}{1 - x} &= 1 + x + x^2 + x^3 + \\dots \\\\\n\\frac{1}{1 - (1/x)} &= 1 + x^{-1} + x^{-2} + x^{-3} + \\dots \\\\\nx &= \\frac{1}{1- (1/x)} \\\\\nx - 1 &= 1 \\\\\nx &= 2\n\\end{align*}\n$$\n\nWhich is to imply that, in a non-rigorous sense and by partially assuming the conclusion,\n that the $n$-nacci constants approach two.\n\n\nGolder than Gold\n----------------\n\nAll carries entirely made up of \"1\"s correspond to the $n$-nacci constants.\nWhile this would appear to exhaust every sequence without going to negative numbers,\n it ignores the potential of carries with a \"0\".\n\nStarting simple, Narayana's cows sequence ([OEIS A000930](http://oeis.org/A000930)) corresponds to\n the recurrence $\\langle 1,0,1|$.\nIt may be seeded with either three 1's, or in the same way as above, with a sequence of 0's followed by a 1.\nThe limiting ratio $\\psi \\approx 1.4656\\dots$ is called the supergolden ratio.\nThe introduction of \"0\"s turns out to have big implications, since the concatenation trick to devise\n the expansion of two no longer works.\nHowever, hope is not lost.\n\n$$\n\\begin{gather*}\n 1\\textcolor{red}{1}000_\\psi\n = 10\\textcolor{red}{101}_\\psi\n = \\textcolor{blue}{101}01_\\psi\n = \\textcolor{blue}{1}00001_\\psi \\\\\n \\textcolor{red}{2} = 1.\\textcolor{red}{101}_\\psi\n = \\textcolor{blue}{1.1}01_\\psi\n = \\textcolor{blue}{1}0.001\\textcolor{blue}{1}_\\psi\n = 10.00\\textcolor{purple}{11}_\\psi\n = 10.0\\textcolor{purple}{1}0000\\textcolor{purple}{1}_\\psi\n\\end{gather*}\n$$\n\nIncredibly, the carry contains not only an explicit rule for \"101\", but implicit rules \"2\" and \"11\".\nThis sort of makes sense: since $\\psi < \\varphi$, adjacent place values are \"too dense\",\n and therefore we can rewrite the string \"11\".\nOn the other hand, attempting to manipulate \"1001\" and \"10001\" results in circuiting back to the original string.\n\n$$\n\\begin{split}\n 100\\textcolor{red}{1}000000_\\psi\n &= 1000\\textcolor{red}{101}000_\\psi\n = 1000\\textcolor{orange}{1}01000_\\psi\n = 10000\\textcolor{orange}{1}1\\textcolor{orange}{1}00_\\psi \\\\\n &= 10000\\textcolor{blue}{11}100_\\psi\n = 1000\\textcolor{blue}{1}0010\\textcolor{blue}{1}_\\psi\n = 1000100\\textcolor{red}{101}_\\psi \\\\\n &= 100010\\textcolor{red}{1}000_\\psi\n = 1000\\textcolor{orange}{101}000_\\psi\n = 100\\textcolor{orange}1000000_\\psi \\\\ \\\\\n \\textcolor{red}{1}0001000_\\psi\n &= 0\\textcolor{red}{101}1000_\\psi\n = 010\\textcolor{blue}{11}000_\\psi\n = 01\\textcolor{blue}{1}0000\\textcolor{blue}{1}_\\psi \\\\\n &= 0\\textcolor{purple}{11}00001_\\psi\n = \\textcolor{purple}{1}0000\\textcolor{purple}{1}01_\\psi \\\\\n &= 10000\\textcolor{red}{101}_\\psi = 1000\\textcolor{red}{1}000_\\psi\n\\end{split}\n$$\n\nI call these strings of \"0\"s sandwiched between \"1\"s *spacings*.\nThe smallest spacing, with a width of zero, is the Fibonacci recurrence.\nIf we forbid both the width-1 and width-0 spacings from appearing in supergolden expansions,\n we obtain the following list:\n\n:::: {.row .text-center width=\"60%\"}\n::: {#canonical-supergolden-table .column}\n\n\n\n| *n* (Decimal) | *n* (base $\\psi$) |\n|--------------:|:-------------------:|\n| 0 | 0 |\n| 1 | 1 |\n| 2 | 10.0100001 |\n| 3 | *100.0110001* |\n| 3 | 100.1000100001 |\n| *4* | *110.0001100001* |\n| 4 | 1000.1000100001 |\n| *5* | *1010.0001100001* |\n| 5 | 10000.0010001 |\n| 6 | 10001.0010001 |\n| *7* | *10010.0110002* |\n| *7* | *10010.1000012* |\n| 7 | 100000.0001000001 |\n| 8 | 100001.0001000001 |\n| 9 | 100100.0000001001 |\n| 10 | 1000000.0000001001 |\n\n:::\n::::\n\nIn the above table, some intermediate steps are shown in red,\n but the last entry for each integer is canonical.\nNot only does the number of digits grow radically faster than in phinary (or even binary),\n but there are many more intermediate steps.\n\nFor space reasons, I do not show the integral dual.\nSlowly-growing sequences, which have largely uninteresting integral systems, dominate the rest of this post.\nTherefore, the remainder of this post will focus solely on fractional systems.\n\n\nRadiant Plastic\n---------------\n\nA similar degree 3 recurrence is $\\langle 0,1,1|$.\nIts root corresponds to the plastic ratio $\\rho \\approx 1.3247\\dots$.\nA number of sequences share this recurrence; when seeded with $0, 0, 1$ as before,\n the best match is the Padovan sequence ([OEIS A000931](http://oeis.org/A000931)),\n which begins with an additional one.\n\nSince $\\rho < \\psi < \\varphi$, we should expect that spacings of at least width two are illegal.\nThe system turns out to be even stricter than that: spacings up to and including width three are expandable.\n\n$$\n\\begin{array}{c|c}\n \\text{Width} & \\textcolor{red}{0} & \\textcolor{green}{1} & 2 & \\textcolor{blue}{3} \\\\ \\hline\n & 0\\textcolor{red}{011}_\\rho\n & 010\\textcolor{red}{1}000_\\rho\n & 0\\textcolor{red}{1}00\\textcolor{red}{1}00000_\\rho\n & 0\\textcolor{red}{1}0001_\\rho\n \\\\\n & \\textcolor{red}{1}000_\\rho\n & 0100\\textcolor{red}{011}_\\rho\n & 00\\textcolor{red}{011}\\textcolor{red}{011}00_\\rho\n & 00\\textcolor{red}{011}1_\\rho\n \\\\\n && 0\\textcolor{blue}{10001}1_\\rho\n & 000\\textcolor{blue}{11011}00_\\rho\n & 000\\textcolor{orange}{111}_\\rho\n \\\\\n && \\textcolor{blue}{1}000001_\\rho\n & 00\\textcolor{blue}{1}0101000_\\rho\n & 00\\textcolor{orange}{1}100_\\rho\n \\\\\n &&\n & 0010\\textcolor{green}{101}000_\\rho\n & 0\\textcolor{red}{011}00_\\rho\n \\\\\n &&\n & 001\\textcolor{green}{1000001}_\\rho\n & \\textcolor{red}{1}00000_\\rho\n \\\\\n &&\n & 0\\textcolor{red}{011}000001_\\rho\n \\\\\n &&\n & \\textcolor{red}{1}000000001_\\rho\n \\\\\\\\\n \\hline\n & s_0 = \\rho^2\n & s_1 = \\rho s_{5}\n & s_2 = \\rho s_{8}\n & s_3 = \\rho\n\\end{array}\n$$\n\nThe final line is shorthand for the spacing rules:\n\n- The zero-spacing is equal to a one in the place value two higher than it\n- The one-spacing is equal to an five-spacing which begins one place value higher than it\n- The two-spacing is equal to an eight-spacing which begins one place value higher than it\n- The three-spacing is equal to a one in the place value one higher than it\n\nWith these rules, we can write a canonical expansion expansion for 2:\n\n$$\n\\begin{align*}\n \\textcolor{red}{2}\n &= 1.\\textcolor{red}{011}\n = \\textcolor{blue}{1.011}\n = \\textcolor{blue}{1}\\overbrace{0.0100000}^{8 \\text{ digits}}\\textcolor{blue}{1} \\\\\n &= \\textcolor{purple}{10.01}000001\n = \\textcolor{purple}{1}00.000000\\textcolor{purple}{1}1 \\\\\n &= 100.00000\\textcolor{red}{011}\n = 100.0000\\textcolor{red}{1}\n\\end{align*}\n$$\n\nSince $\\rho < \\sqrt 2$, the largest place value in the expansion of two is $\\rho^2$, which\n distinguishes it from previous systems.\n\nSimilarly to how the width-two and width-three spacings are allowed in the supergolden ratio base,\n we realize that the width-four spacing cannot be expanded further in the plastic ratio base:\n\n$$\n\\begin{align*}\n \\textcolor{red}{1}0000\\textcolor{red}{1}000\n &= 0\\textcolor{red}{011}00\\textcolor{red}{011}\n = 001\\textcolor{blue}{10001}1\n = 00\\textcolor{blue}{2}000001 \\\\\n &= \\textcolor{blue}{1}000000\\textcolor{blue}{1}1\n = 100001000\n\\end{align*}\n$$\n\nWith these implicit rules derived for spacings of width smaller than three,\n the plastic expansions of the integers up to ten are as follows:\n\n:::: {.row .text-center width=\"70%\"}\n::: {#canonical-plastic-table .column}\n\n\n\n| *n* (Decimal) | *n* (base $\\rho$) |\n|--------------:|:----------------------------:|\n| 0 | 0 |\n| 1 | 1 |\n| 2 | 100.00001 |\n| *3* | *101.00001* |\n| *3* | *1000.00101* |\n| 3 | 1000.01000001 |\n| *4* | *10000.0101000000001* |\n| 4 | 10000.1000001000001 |\n| *5* | *10100.0000001000001* |\n| 5 | 100000.1000001000001 |\n| *6* | *100001.1000001000001* |\n| *6* | *100100.0000001000001* |\n| *6* | *1000000.0010001000001* |\n| 6 | 1000000.0100000000001 |\n| *7* | 1000001.0100000000001 |\n| 7 | 1000010.0000100000001 |\n| *8* | *1001000.0000100000001* |\n| *8* | *10000000.0100100000001* |\n| *8* | *10000000.1000000001001* |\n| 8 | 10000000.100000001000000001 |\n| 9 | 10000100.000000001000000001 |\n| 10 | 10001000.001000001000000001 |\n\n:::\n::::\n\nClearly, this base is incredibly sensitive.\nA number as small as 8 has a fractional part as small as $\\rho^{-18}$ in its expansion.\n\n\nSkipped Spacings\n----------------\n\nWhen discussing the expandable spacings in the supergolden and plastic bases, they jumped from\n width one to width three.\nDid we forgot width 2?\nThe strings \"1001\" and \"10001\" are associated to the carries\n $\\langle 1, 0, 0, 1|$ and $\\langle 1, 0, 0, 0, 1|$.\n\n| Spacing Width | Carry | Integral Sequence | Root |\n|---------------|--------------------------------------------|------------------------------------------|---------------------------|\n| 0 | $\\langle 1,1|$ | Fibonacci numbers, Lucas numbers | Golden Ratio, $\\varphi$ |\n| 1 | $\\langle 1,0,1|$ | Narayana's cows sequence | Supergolden Ratio, $\\psi$ |\n| 2 | $\\langle 1,0,0,1|$ | [OEIS A003269](https://oeis.org/A003269) | Unnamed $(\\upsilon?)$ |\n| 3 | $\\langle 1,0,0,0,1| \\simeq \\langle 0,1,1|$ | Padovan sequence, Perrin sequence | Plastic Ratio, $\\rho$ |\n\nI chose the symbol $\\upsilon$ since it came from the second half of the Greek alphabet,\n like the others.\n\nWhile the width-two spacing is a irreducible polynomial like its predecessors,\n the width-three one can be factored\n\n::: {#571cbad9 .cell execution_count=2}\n``` {.python .cell-code}\ndef spacing(width):\n return x**(width + 2) - x**(width + 1) - 1\n\nsympy.Eq(spacing(3), spacing(3).factor())\n```\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=2}\n$\\displaystyle x^{5} - x^{4} - 1 = \\left(x^{2} - x + 1\\right) \\left(x^{3} - x - 1\\right)$\n:::\n:::\n\n\nThis also means that despite $\\rho$ and $\\psi$ being cubic roots,\n $\\upsilon$ is irreducibly a quartic root, despite being between them in terms of spacing width.\n\nThe right polynomial may be familiar from the previous post as $\\langle 1, -1 |$,\n which only has complex roots.\nIt happens to be the sixth cyclotomic polynomial ($\\Phi_6$), and allows the width-three spacing\n to be equivalent to the simpler plastic ratio carry.\n\nAs previously stated, the cyclotomic polynomials cause big trouble for carries.\nOther than factoring, there appears to be no way to derive $\\langle 0,1,1|$ from $\\langle 1,0,0,0,1|$.\nAt best, we can observe the following:\n\n$$\n\\begin{matrix}\n \\langle 1,0,0,0,1| && \\langle 0,1,1| \\\\ \\hline\n 11111 &\\iff& 11111 \\\\\n 101110 && 1000111 \\\\\n 1001100 &\\iff& 1001100 \\\\\n 10001000 && 1100000 \\\\\n 100000000 &\\iff& 100000000 \\\\\n\\end{matrix}\n$$\n\n\n### Chopped Circles\n\nThe appearance of a cyclotomic factor is not unique to the width-three spacing.\nEach of the smaller-width rules in the supergolden and plastic bases can be reexamined as polynomials.\nAfter converting and factoring, their cyclotomic factors become clear:\n\n$$\n\\begin{gather*}\n 11000_\\psi = 100001_\\psi \\\\\n 1\\bar{1}\\bar{1}001_\\psi = 0 \\\\\n \\psi^5 - \\psi^4 - \\psi^3 + 1 \\\\\n (\\psi - 1)(\\psi + 1)(\\psi^3 - \\psi^2 - 1) \\\\\n \\Phi_1 \\Phi_2 \\langle 1,0,1|\n \\\\ \\\\\n \\begin{gather*}\n 101000_\\rho = 1000001_\\rho &\n 100100000_\\rho = 1000000001_\\rho \\\\\n 1\\bar{1}0\\bar{1}001_\\rho = 0 &\n 1\\bar{1}00\\bar{1}00001_\\rho = 0 \\\\\n \\rho^6 - \\rho^5 - \\rho^3 + 1 &\n \\rho^9 - \\rho^8 - \\rho^5 + 1 \\\\\n (\\rho - 1)(\\rho^2 + 1)(\\rho^3 - \\rho - 1) &\n \\dots(\\rho^2 - \\rho + 1)(\\rho^3 - \\rho - 1) \\\\\n \\Phi_1 \\Phi_4 \\langle 0,1,1| &\n \\Phi_1 \\Phi_2 \\Phi_4 \\Phi_6 \\langle 0,1,1|\n \\end{gather*}\n\\end{gather*}\n$$\n\nThough I am uncertain without a proof, it seems that cyclotomic polynomials\n play a role in spacing out \"1\"s.\nThis is to say that spacings have a \"fundamental\" irreducible polynomial.\nBy multiplying certain cyclotomic polynomials by the fundamental, (all?) smaller spacings\n can produce spacings the size of the fundamental or less.\n\nNaturally, I attempted to write a program to compute lesser spacings from an implicit rule.\nGenerally, this entailed assembling all lesser spacings, then expanding the rightmost 1\n if unable to find any spacing, else replacing and continuing.\nUnfortunately, since it operates in lockstep, it gets stuck easily, and I had little success.\nMy Haskell code can be found [here](zero_spacing.hs).\n\n### Inherently Factorable Spacings\n\nThe width-three spacing is not fundamental, since it can be factored.\nWe can collect reducible spacings into a table:\n\n::: {#5367b1cf .cell execution_count=3}\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=3}\n------------ ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------\n*n*-spacing 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19\nIrreducible? Yes Yes Yes No Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes No Yes Yes Yes Yes\n------------ ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------\n:::\n:::\n\n\nIn the range given, this table appears to repeat every six terms.\nWe can examine each of these factors directly:\n\n$$\n\\begin{align*}\n x^5 - x^4 - 1 &= (x^2 - x + 1)\n (x^3 - x - 1) \\\\\n &= 1\\bar{1}1_x * 10\\bar{1}\\bar{1}_x \\\\\n x^{11} - x^{10} - 1 &= (x^2 - x + 1)\n (x^9 - x^7 - x^6 + x^4 + x^3 - x - 1) \\\\\n &= 1\\bar{1}1_x * 10\\bar{1}\\bar{1}0110\\bar{1}\\bar{1}_x \\\\\n x^{17} - x^{16} - 1 &= (x^2 - x + 1)\n (x^{15} - x^{13} - \\dots + x^4 + x^3 - x - 1) \\\\\n &= 1\\bar{1}1_x * 10\\bar{1}\\bar{1}0110\\bar{1}\\bar{1}0110\\bar{1}\\bar{1}_x \\\\\n 5, 11, 17, \\dots &= 6n + 5\n\\end{align*}\n$$\n\nEach of these polynomials has $\\Phi_6$ as a common factor.\nThe other factor appears to be a truncation of the repeating string \"$\\underline{0110\\bar{1}\\bar{1}}$\".\n^[Since I already use the overbar for negative digits, I gather repeating terms using an underline as a vinculum.]\nInterpreted as a power series, this is the reciprocal of $-\\Phi_6$ ([OEIS A010892](https://oeis.org/A010892)).\n\nAs the carry approaches infinite width, the $x$ terms go to 0 for $x < 1$.\nThis shows that like the $n$-nacci constants approach two, the spacing constants approach one.\n\n\nRepeating Expansions\n--------------------\n\nLet's not get too eager here and instead return to base $\\upsilon$.\nIt should be possible to expand the strings \"11\" and \"101\", since it is the fundamental spacing of width 2.\nHowever, we immediately run into an issue:\n\n$$\n\\begin{array}{c|c}\n \\text{Width} & \\textcolor{green}{0} & \\textcolor{blue}{1} & \\textcolor{red}{2} \\\\ \\hline\n & 01\\textcolor{red}{1}00000_\\upsilon\n & 010\\textcolor{red}{1}0000_\\upsilon\n & 0\\textcolor{red}{1001}_\\upsilon\n \\\\\n & 010\\textcolor{red}{1001}0_\\upsilon\n & 0100\\textcolor{red}{1001}_\\upsilon\n & \\textcolor{red}{1}0000_\\upsilon\n \\\\\n & 0\\textcolor{blue}{101}0010_\\upsilon\n & 0\\textcolor{orange}{1001}001_\\upsilon\n \\\\\n & \\textcolor{blue}{1}000001\\textcolor{blue}{1}_\\upsilon\n & \\textcolor{orange}{1}0000001_\\upsilon\n \\\\\n & 100000\\textcolor{green}{11}_\\upsilon \\\\\n & \\vdots \\\\ \\hline\n & s_0 = \\ ? & s_1 = \\rho s_6 & s_2 = \\rho\n\\end{array}\n$$\n\nThe width-0 expansion is recursive.\nIf we continue to apply its rule, we generate the string \"100001\" repeating.\nFortunately, each repeating unit is a width-four spacing, which is allowed by the carry.\n\nRepeating expansions imply a representation by geometric series:\n\n$$\n\\begin{gather*}\n 1.\\underbrace{\\underline{0\\dots1}}_{n}{}_x = 1 + x^{-n} + x^{-2n} + x^{-3n} + \\dots\n = \\frac{1}{1 - (1/x)^n} = \\frac{x^n}{x^n - 1}\n \\\\\n 10 = 1.\\underbrace{\\underline{0\\dots1}}_{n}{}_x ~\\iff~ x = \\frac{x^n}{x^n - 1} \\\\\n 1 = \\frac{x^{n-1}}{x^n - 1} \\\\ \\\\\n x^{n-1} = x^n - 1\n\\end{gather*}\n$$\n\nThe final expression is just the definition of a carry, so we can immediately write:\n\n$$\n\\begin{align*}\n 10_\\varphi &= 1.\\underline{01}_\\varphi & &\n \\text{Carry } \\langle 1,1| \\\\\n 10_\\psi &= 1.\\underline{001}_\\psi & &\n \\text{Carry } \\langle 1,0,1| \\\\\n 10_\\upsilon &= 1.\\underline{0001}_\\upsilon & &\n \\text{Carry } \\langle 1,0,0,1| \\\\\n 10_{\\rho} &= 1.\\underline{00001}_\\rho & &\n \\text{Carry } \\langle 1,0,0,0,1| = \\langle 0,1,1|\n\\end{align*}\n$$\n\nThis neatly ties repeating spacings in with carries.\n^[Recall that when we naively computed ten in base *φ*, we got \"10100.0100101010101010101\".\nAfter a certain point, this expansion alternates between 0 and 1. Assuming that this is true repetition\nand applying $10_\\varphi = 1.\\underline{01}_\\varphi$, one obtains \"10100.0101\", which is canonical. ]\n\nBut we didn't want \"10\" as a repeating expansion, we wanted \"11\".\nAttempting to justify with the same strategy:\n\n$$\n\\begin{align*}\n 0.11_\\upsilon &= 1.\\underline{00001}_\\upsilon & \\text{Carry } \\langle 1,0,0,1|\n \\\\\n \\frac{1}{x} + \\frac{1}{x^2} &= \\frac{x^n}{x^n - 1} \\\\\n x + 1 &= \\frac{x^{n+2}}{x^n - 1}\n \\\\[8pt]\n x^{n+1} + x^n - x - 1 &= x^{n+2} \\\\\n x^{n+2} - x^{n+1} - x^n + x + 1 &= 0 \\\\\n x^n(x^2 - x - 1) + x + 1 &= 0\n\\end{align*}\n$$\n\n::: {#185c9fdf .cell execution_count=4}\n``` {.python .cell-code}\nrepeating_pair = lambda n: (x**n * (x**2 - x - 1) + x + 1).expand().factor()\n\nMarkdown(tabulate(\n zip(*(\n [[\"*n*-repeat\", \"Irreducible?\"]]\n + [[ str(i), display(is_irreducible(repeating_pair(i))) ] for i in range(1, 10)]\n ))\n))\n```\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=4}\n------------ ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------\n*n*-repeat 1 2 3 4 5 6 7 8 9\nIrreducible? Yes Yes Yes Yes No Yes Yes Yes Yes\n------------ ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------\n:::\n:::\n\n\nFor $n = 5$, the polynomial factors as the product of $\\langle 1, 0, 0, 1|$ and $\\langle 0, 1, 1|$.\nThe second factor should come as no surprise since we know directly that $0.11_\\rho = 10_\\rho$\n and we already evaluated $10_{\\rho} = 1.\\underline{00001}_\\rho$\n\nChecking more $n$, this polynomial actually seems to be the only reducible one for quite a while.\n\n::: {#a1699a60 .cell freeze='true' execution_count=5}\n``` {.python .cell-code code-fold=\"false\"}\nall(is_irreducible(repeating_pair(i)) for i in range(10, 100))\n```\n\n::: {.cell-output .cell-output-display execution_count=5}\n```\nTrue\n```\n:::\n:::\n\n\nThis bestows some level of intrigue upon the repeating expansion of \"11\".\nSince repeating expansions are required for base $\\upsilon$ I will elect to not show the expansion of the integers.\n\n\n### Weird Modulus Patterns\n\nThis can be generalized slightly to match any spacing with any repeating spacing:\n\n$$\n\\begin{gather*}\n 0.\\underbrace{10\\dots01}_m = 1.\\underbrace{\\underline{0\\dots01}}_n\n ~\\Leftrightarrow~\n \\frac{1}{x} + \\frac{1}{x^m} = \\frac{x^n}{x^n - 1}\n \\\\\n x^{m-1} + 1 = \\frac{x^{n+m}}{x^n - 1} \\\\\n \\\\\n x^{n+m-1} + x^n - x^{m-1} - 1 = x^{n+m}\\\\\n x^{n+m} - x^{n+m-1} - x^n + x^{m-1} + 1 = 0 \\\\\n (x^n)(x^m - x^{m-1} - 1) + x^{m-1} + 1 = 0 \\\\\n\\end{gather*}\n$$\n\nIf the polynomial has factors, then fractional systems where those factors are carries have\n repeating expansions of width $n$ for a spacing of width $m$.\nGraphing the tuples of reducible polynomials produces a strange pattern\n apparently arranged in lines (going from the lower left to the upper right):\n\n::: {#6ceada2d .cell execution_count=6}\n``` {.python .cell-code}\ngeneral_repeats = lambda m, n: (x**n)*(x**m - x**(m-1) - 1) + x**(m-1) + 1\n\nplt.xticks(range(20))\nplt.yticks(range(20))\nplt.xlabel(\"$m - 1$\")\nplt.ylabel(\"$n - 1$\")\nplt.imshow([\n [ is_irreducible(general_repeats(m + 1, n + 1)) for m in range(20) ]\n for n in range(20)\n])\n```\n\n::: {.cell-output .cell-output-display}\n![](index_files/figure-html/cell-7-output-1.png){width=433 height=429}\n:::\n:::\n\n\nThe leftmost purple square is the exception, which corresponds to the earlier $(m, n) = (2, 5)$.\nEvery purple square here is a reducible polynomial, the first few of whose factors are:\n\n\n| $(m, n)$ | Sum | Polynomial Factors\n|----------|-----|-------------------\n| (2, 5) | 7 | $(x^3 - x - 1) (x^4 - x^3 - 1)$\n| (3, 11) | 14 | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{10} - x^8 - x^7 - x^6 - x^5 + x^3 + x^2 + x + 1)$\n| (7, 7) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{10} - x^8 - x^5 + x + 1)$\n| (13, 1) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{10} + x^7 - x^5 - x^2 + 1)$\n| (7, 17) | 24 | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{20} - x^{18} - x^{15} - x^{12} + x^{10} + x^7 - x^5 + x + 1)$\n| (13, 11) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{20} - x^{18} - x^{15} + x^{13} + x^{10} + \\dots + x + 1)$\n| (17, 7) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{20} - x^{18} - x^{15} + x^{13} + x^{12} + \\dots + x + 1)$\n| (17, 17) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{30} - x^{28} - x^{25} + x^{23} + x^{20} - x^{18} - \\dots + x + 1)$\n\nOnly the first entry has factor that is a carry associated to a spacing.\nEvery other entry appears to have $(x^4 - x^3 + x^2 - x + 1)$ as a common factor,\n which is the 10th cyclotomic polynomial.\n\nThese solutions also have sums which increment in tens, which correspond to the\n vertical and horizontal lines of purple squares in the image.\nBoth $m$ and $n$ solutions work in a similar way: the symmetric solution (7, 7)\n has similar solutions (7, 17), (17, 7), and (17, 17).\nThis pattern also holds up in the \"next\" terms (7, 27), (17, 27), (27, 27), (27, 17), and (27, 7).\nIt appears as though there is a congruence of $m + n\\ (\\text{mod } mn)$,\n where m and n come from the exception (2, 5).\nThis pattern is similar to the one in which one in every six spacings can be factored.\n\n\nClosing\n-------\n\nIn summary, the Fibonacci recurrence can be generalized in at least two two different ways.\nIntroducing \"0\"s into the carry is more touch-and-go than would otherwise seem,\n though they produce (with much effort) valid bases.\n\nThe [next post](../4) will explore a more distant cousin of the Fibonacci numbers,\n and other strange power series which arise from its discussion.\n\n", + "markdown": "---\ntitle: \"Polynomial Counting 3: The third degree\"\ndescription: |\n Interesting results on simple irrational counting systems involving only zero and one.\nformat:\n html:\n html-math-method: katex\ndate: \"2021-02-06\"\ndate-modified: \"2025-02-08\"\njupyter: python3\ncategories:\n - algebra\n - phinary\n - binary\n - python\ncode-fold: true\n---\n\n\n\n\n\nThis post assumes you have read the [first](../1) post, which introduces generalized positional counting,\n and the [second](../2), which restricts the focus and specifies the general aim.\n\nThus far, the systems have been based on quadratic polynomials and two-term linear recurrences,\n or more directly, carries of width two.\nNumbers larger than one introduce certain complications to carries.\nWith that in mind, let's go back to things closer to phinary and Fibonacci.\n\n\nTribonacci and Beyond\n---------------------\n\nThe *Tribonacci numbers* ([OEIS A000073](http://oeis.org/A000073)) come from elongating the\n Fibonacci recurrence to 3 terms.\nIn other words, this is the carry/recurrence $\\langle 1,1,1|$.\nThe Tribonacci numbers are seeded with two zeros followed by a single one;\n thus, the sequence begins $0, 0, 1, 1, 2, 4, 7, 13,\\dots$\nThe *Tribonacci constant* is the limiting ratio of these numbers\n (i.e., the positive real root of $x^3 - x^2 - x - 1$) with approximate value $T = 1.8393\\dots$\n\nThe number two bounds both this number and the terms in the recurrence, so its expansion can be deduced:\n\n$$\n\\textcolor{red}{2} = 1.\\textcolor{red}{111}_T = \\textcolor{blue}{1.11}1_T = \\textcolor{blue}{1}0.001_T\n$$\n\nNaturally, the string \"111\" will be illegal in both systems.\nThe Tribonacci expansions of the integers are as follows:\n\n:::: {.row .text-center width=\"60%\"}\n::: {#canonical-tribonacci-table .column}\n\n| *n* (Decimal) | *n* (base $T$) | *n* (Tribonacci) |\n|--------------:|:--------------:|------------------|\n| 0 | 0 | 0 |\n| 1 | 1 | 1 |\n| 2 | 10.001 | 10 |\n| 3 | 11.001 | 11 |\n| 4 | 100.100011 | 100 |\n| 5 | 101.100011 | 101 |\n| 6 | 110.101011 | 110 |\n| 7 | 1000.101011 | 1000 |\n| 8 | 1001.101011 | 1001 |\n| 9 | 1010.110100011 | 1010 |\n| 10 | 1100.010100011 | 1011 |\n\n:::\n::::\n\nSince \"111\" is a rarer string than \"11\", the integral base more closely resembles standard binary.\n\nExtensions of the Fibonacci numbers, which have an $n$-term recurrence\n (seeded with $n - 1$ zeroes followed by a one) are called \"n-nacci\" or \"n-bonacci\" numbers.\nIf we discard the seeding terms, then for larger and larger *n*, this sequence of sequences appears\n to approach the powers of two.\n\n$$\n\\begin{matrix}\n \\text{Fibonacci: } & & & 0,& 1,& 1,& 2,& 3,& 5,& 8\\dots \\\\\n \\text{Tribonacci: } & & 0,& 0,& 1,& 1,& 2,& 4,& 7,& 13\\dots \\\\\n \\text{Tetranacci: } & 0,& 0,& 0,& 1,& 1,& 2,& 4,& 8,& 15\\dots \\\\\n \\vdots \\\\\n \\text{Binary: } & (\\dots,& 0,& 0,& 1,)& 1,& 2,& 4,& 8,& 16\\dots\n\\end{matrix}\n$$\n\nIn the limit, the rightmost and leftmost \"1\"s in the carry $\\langle 1, 1, ..., 1, 1 |$ are\n infinitely far away from each other.\nThis is similar to binary, in which $2 = 1.1111\\dots_2$.\nThis argument is clearer if we directly manipulate the carry as a polynomial $p_n(x)$:\n\n$$\n\\begin{align*}\np_n &= x^n - x^{n-1} - … - x - 1 \\\\\n-p_n &= -x^n + x^{n-1} + … + x + 1 \\\\\nx^n - p_n &= x^{n-1} + … + x + 1 \\\\\nx - p_n x^{-n+1} &= 1 + x^{-1} + … x^{-n+2} + x^{-n+1} \\\\[8pt]\n\\text{Let } n &\\rightarrow \\infty \\\\\nx &= 1 + x^{-1} + x^{-2} + x^{-3} + …\n\\end{align*}\n$$\n\nSince both *φ* and $T$ are greater than 1, we can assume that $x > 1$, which causes the\n $x^{-n+1}$ term to vanish in the limit.\nUnfortunately, this means $p_n$ should diverge, invalidating the above argument.\n\nIgnoring this, the last line can be manipulated as a power series:\n\n$$\n\\begin{align*}\n\\frac{1}{1 - x} &= 1 + x + x^2 + x^3 + \\dots \\\\\n\\frac{1}{1 - (1/x)} &= 1 + x^{-1} + x^{-2} + x^{-3} + \\dots \\\\\nx &= \\frac{1}{1- (1/x)} \\\\\nx - 1 &= 1 \\\\\nx &= 2\n\\end{align*}\n$$\n\nWhich is to imply that, in a non-rigorous sense and by partially assuming the conclusion,\n that the $n$-nacci constants approach two.\n\n\nGolder than Gold\n----------------\n\nAll carries entirely made up of \"1\"s correspond to the $n$-nacci constants.\nWhile this would appear to exhaust every sequence without going to negative numbers,\n it ignores the potential of carries with a \"0\".\n\nStarting simple, Narayana's cows sequence ([OEIS A000930](http://oeis.org/A000930)) corresponds to\n the recurrence $\\langle 1,0,1|$.\nIt may be seeded with either three 1's, or in the same way as above, with a sequence of 0's followed by a 1.\nThe limiting ratio $\\psi \\approx 1.4656\\dots$ is called the supergolden ratio.\nThe introduction of \"0\"s turns out to have big implications, since the concatenation trick to devise\n the expansion of two no longer works.\nHowever, hope is not lost.\n\n$$\n\\begin{gather*}\n 1\\textcolor{red}{1}000_\\psi\n = 10\\textcolor{red}{101}_\\psi\n = \\textcolor{blue}{101}01_\\psi\n = \\textcolor{blue}{1}00001_\\psi \\\\\n \\textcolor{red}{2} = 1.\\textcolor{red}{101}_\\psi\n = \\textcolor{blue}{1.1}01_\\psi\n = \\textcolor{blue}{1}0.001\\textcolor{blue}{1}_\\psi\n = 10.00\\textcolor{purple}{11}_\\psi\n = 10.0\\textcolor{purple}{1}0000\\textcolor{purple}{1}_\\psi\n\\end{gather*}\n$$\n\nIncredibly, the carry contains not only an explicit rule for \"101\", but implicit rules \"2\" and \"11\".\nThis sort of makes sense: since $\\psi < \\varphi$, adjacent place values are \"too dense\",\n and therefore we can rewrite the string \"11\".\nOn the other hand, attempting to manipulate \"1001\" and \"10001\" results in circuiting back to the original string.\n\n$$\n\\begin{split}\n 100\\textcolor{red}{1}000000_\\psi\n &= 1000\\textcolor{red}{101}000_\\psi\n = 1000\\textcolor{orange}{1}01000_\\psi\n = 10000\\textcolor{orange}{1}1\\textcolor{orange}{1}00_\\psi \\\\\n &= 10000\\textcolor{blue}{11}100_\\psi\n = 1000\\textcolor{blue}{1}0010\\textcolor{blue}{1}_\\psi\n = 1000100\\textcolor{red}{101}_\\psi \\\\\n &= 100010\\textcolor{red}{1}000_\\psi\n = 1000\\textcolor{orange}{101}000_\\psi\n = 100\\textcolor{orange}1000000_\\psi \\\\ \\\\\n \\textcolor{red}{1}0001000_\\psi\n &= 0\\textcolor{red}{101}1000_\\psi\n = 010\\textcolor{blue}{11}000_\\psi\n = 01\\textcolor{blue}{1}0000\\textcolor{blue}{1}_\\psi \\\\\n &= 0\\textcolor{purple}{11}00001_\\psi\n = \\textcolor{purple}{1}0000\\textcolor{purple}{1}01_\\psi \\\\\n &= 10000\\textcolor{red}{101}_\\psi = 1000\\textcolor{red}{1}000_\\psi\n\\end{split}\n$$\n\nI call these strings of \"0\"s sandwiched between \"1\"s *spacings*.\nThe smallest spacing, with a width of zero, is the Fibonacci recurrence.\nIf we forbid both the width-1 and width-0 spacings from appearing in supergolden expansions,\n we obtain the following list:\n\n:::: {.row .text-center width=\"60%\"}\n::: {#canonical-supergolden-table .column}\n\n\n\n| *n* (Decimal) | *n* (base $\\psi$) |\n|--------------:|:-------------------:|\n| 0 | 0 |\n| 1 | 1 |\n| 2 | 10.0100001 |\n| 3 | *100.0110001* |\n| 3 | 100.1000100001 |\n| *4* | *110.0001100001* |\n| 4 | 1000.1000100001 |\n| *5* | *1010.0001100001* |\n| 5 | 10000.0010001 |\n| 6 | 10001.0010001 |\n| *7* | *10010.0110002* |\n| *7* | *10010.1000012* |\n| 7 | 100000.0001000001 |\n| 8 | 100001.0001000001 |\n| 9 | 100100.0000001001 |\n| 10 | 1000000.0000001001 |\n\n:::\n::::\n\nIn the above table, some intermediate steps are shown in red,\n but the last entry for each integer is canonical.\nNot only does the number of digits grow radically faster than in phinary (or even binary),\n but there are many more intermediate steps.\n\nFor space reasons, I do not show the integral dual.\nSlowly-growing sequences, which have largely uninteresting integral systems, dominate the rest of this post.\nTherefore, the remainder of this post will focus solely on fractional systems.\n\n\nRadiant Plastic\n---------------\n\nA similar degree 3 recurrence is $\\langle 0,1,1|$.\nIts root corresponds to the plastic ratio $\\rho \\approx 1.3247\\dots$.\nA number of sequences share this recurrence; when seeded with $0, 0, 1$ as before,\n the best match is the Padovan sequence ([OEIS A000931](http://oeis.org/A000931)),\n which begins with an additional one.\n\nSince $\\rho < \\psi < \\varphi$, we should expect that spacings of at least width two are illegal.\nThe system turns out to be even stricter than that: spacings up to and including width three are expandable.\n\n$$\n\\begin{array}{c|c}\n \\text{Width} & \\textcolor{red}{0} & \\textcolor{green}{1} & 2 & \\textcolor{blue}{3} \\\\ \\hline\n & 0\\textcolor{red}{011}_\\rho\n & 010\\textcolor{red}{1}000_\\rho\n & 0\\textcolor{red}{1}00\\textcolor{red}{1}00000_\\rho\n & 0\\textcolor{red}{1}0001_\\rho\n \\\\\n & \\textcolor{red}{1}000_\\rho\n & 0100\\textcolor{red}{011}_\\rho\n & 00\\textcolor{red}{011}\\textcolor{red}{011}00_\\rho\n & 00\\textcolor{red}{011}1_\\rho\n \\\\\n && 0\\textcolor{blue}{10001}1_\\rho\n & 000\\textcolor{blue}{11011}00_\\rho\n & 000\\textcolor{orange}{111}_\\rho\n \\\\\n && \\textcolor{blue}{1}000001_\\rho\n & 00\\textcolor{blue}{1}0101000_\\rho\n & 00\\textcolor{orange}{1}100_\\rho\n \\\\\n &&\n & 0010\\textcolor{green}{101}000_\\rho\n & 0\\textcolor{red}{011}00_\\rho\n \\\\\n &&\n & 001\\textcolor{green}{1000001}_\\rho\n & \\textcolor{red}{1}00000_\\rho\n \\\\\n &&\n & 0\\textcolor{red}{011}000001_\\rho\n \\\\\n &&\n & \\textcolor{red}{1}000000001_\\rho\n \\\\\\\\\n \\hline\n & s_0 = \\rho^2\n & s_1 = \\rho s_{5}\n & s_2 = \\rho s_{8}\n & s_3 = \\rho\n\\end{array}\n$$\n\nThe final line is shorthand for the spacing rules:\n\n- The zero-spacing is equal to a one in the place value two higher than it\n- The one-spacing is equal to an five-spacing which begins one place value higher than it\n- The two-spacing is equal to an eight-spacing which begins one place value higher than it\n- The three-spacing is equal to a one in the place value one higher than it\n\nWith these rules, we can write a canonical expansion expansion for 2:\n\n$$\n\\begin{align*}\n \\textcolor{red}{2}\n &= 1.\\textcolor{red}{011}\n = \\textcolor{blue}{1.011}\n = \\textcolor{blue}{1}\\overbrace{0.0100000}^{8 \\text{ digits}}\\textcolor{blue}{1} \\\\\n &= \\textcolor{purple}{10.01}000001\n = \\textcolor{purple}{1}00.000000\\textcolor{purple}{1}1 \\\\\n &= 100.00000\\textcolor{red}{011}\n = 100.0000\\textcolor{red}{1}\n\\end{align*}\n$$\n\nSince $\\rho < \\sqrt 2$, the largest place value in the expansion of two is $\\rho^2$, which\n distinguishes it from previous systems.\n\nSimilarly to how the width-two and width-three spacings are allowed in the supergolden ratio base,\n we realize that the width-four spacing cannot be expanded further in the plastic ratio base:\n\n$$\n\\begin{align*}\n \\textcolor{red}{1}0000\\textcolor{red}{1}000\n &= 0\\textcolor{red}{011}00\\textcolor{red}{011}\n = 001\\textcolor{blue}{10001}1\n = 00\\textcolor{blue}{2}000001 \\\\\n &= \\textcolor{blue}{1}000000\\textcolor{blue}{1}1\n = 100001000\n\\end{align*}\n$$\n\nWith these implicit rules derived for spacings of width smaller than three,\n the plastic expansions of the integers up to ten are as follows:\n\n:::: {.row .text-center width=\"70%\"}\n::: {#canonical-plastic-table .column}\n\n\n\n| *n* (Decimal) | *n* (base $\\rho$) |\n|--------------:|:----------------------------:|\n| 0 | 0 |\n| 1 | 1 |\n| 2 | 100.00001 |\n| *3* | *101.00001* |\n| *3* | *1000.00101* |\n| 3 | 1000.01000001 |\n| *4* | *10000.0101000000001* |\n| 4 | 10000.1000001000001 |\n| *5* | *10100.0000001000001* |\n| 5 | 100000.1000001000001 |\n| *6* | *100001.1000001000001* |\n| *6* | *100100.0000001000001* |\n| *6* | *1000000.0010001000001* |\n| 6 | 1000000.0100000000001 |\n| *7* | 1000001.0100000000001 |\n| 7 | 1000010.0000100000001 |\n| *8* | *1001000.0000100000001* |\n| *8* | *10000000.0100100000001* |\n| *8* | *10000000.1000000001001* |\n| 8 | 10000000.100000001000000001 |\n| 9 | 10000100.000000001000000001 |\n| 10 | 10001000.001000001000000001 |\n\n:::\n::::\n\nClearly, this base is incredibly sensitive.\nA number as small as eight has a fractional part as small as $\\rho^{-18}$ in its expansion.\n\n\nSkipped Spacings\n----------------\n\nWhen discussing the expandable spacings in the supergolden and plastic bases, they jumped from\n width one to width three.\nDid we forgot width 2?\nThe strings \"1001\" and \"10001\" are associated to the carries\n $\\langle 1, 0, 0, 1|$ and $\\langle 1, 0, 0, 0, 1|$.\n\n| Spacing Width | Carry | Integral Sequence | Root |\n|---------------|--------------------------------------------|------------------------------------------|---------------------------|\n| 0 | $\\langle 1,1|$ | Fibonacci numbers, Lucas numbers | Golden Ratio, $\\varphi$ |\n| 1 | $\\langle 1,0,1|$ | Narayana's cows sequence | Supergolden Ratio, $\\psi$ |\n| 2 | $\\langle 1,0,0,1|$ | [OEIS A003269](https://oeis.org/A003269) | Unnamed $(\\upsilon?)$ |\n| 3 | $\\langle 1,0,0,0,1| \\simeq \\langle 0,1,1|$ | Padovan sequence, Perrin sequence | Plastic Ratio, $\\rho$ |\n\nI chose the symbol $\\upsilon$ since it came from the second half of the Greek alphabet,\n like the others.\n\nWhile the width-two spacing is a irreducible polynomial like its predecessors,\n the width-three one can be factored\n\n::: {#f3bdbe46 .cell execution_count=2}\n``` {.python .cell-code}\ndef spacing(width):\n return x**(width + 2) - x**(width + 1) - 1\n\nsympy.Eq(spacing(3), spacing(3).factor())\n```\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=2}\n$\\displaystyle x^{5} - x^{4} - 1 = \\left(x^{2} - x + 1\\right) \\left(x^{3} - x - 1\\right)$\n:::\n:::\n\n\nThis also means that despite $\\rho$ and $\\psi$ being cubic roots,\n $\\upsilon$ is irreducibly a quartic root, despite being between them in terms of spacing width.\n\nThe right polynomial may be familiar from the previous post as $\\langle 1, -1 |$,\n which only has complex roots.\nIt happens to be the sixth cyclotomic polynomial ($\\Phi_6$), and allows the width-three spacing\n to be equivalent to the simpler plastic ratio carry.\n\nAs previously stated, the cyclotomic polynomials cause big trouble for carries.\nOther than factoring, there appears to be no way to derive $\\langle 0,1,1|$ from $\\langle 1,0,0,0,1|$.\nAt best, we can observe the following:\n\n$$\n\\begin{matrix}\n \\langle 1,0,0,0,1| && \\langle 0,1,1| \\\\ \\hline\n 11111 &\\iff& 11111 \\\\\n 101110 && 1000111 \\\\\n 1001100 &\\iff& 1001100 \\\\\n 10001000 && 1100000 \\\\\n 100000000 &\\iff& 100000000 \\\\\n\\end{matrix}\n$$\n\n\n### Chopped Circles\n\nThe appearance of a cyclotomic factor is not unique to the width-three spacing.\nEach of the smaller-width rules in the supergolden and plastic bases can be reexamined as polynomials.\nAfter converting and factoring, their cyclotomic factors become clear:\n\n$$\n\\begin{gather*}\n 11000_\\psi = 100001_\\psi \\\\\n 1\\bar{1}\\bar{1}001_\\psi = 0 \\\\\n \\psi^5 - \\psi^4 - \\psi^3 + 1 \\\\\n (\\psi - 1)(\\psi + 1)(\\psi^3 - \\psi^2 - 1) \\\\\n \\Phi_1 \\Phi_2 \\langle 1,0,1|\n \\\\ \\\\\n \\begin{gather*}\n 101000_\\rho = 1000001_\\rho &\n 100100000_\\rho = 1000000001_\\rho \\\\\n 1\\bar{1}0\\bar{1}001_\\rho = 0 &\n 1\\bar{1}00\\bar{1}00001_\\rho = 0 \\\\\n \\rho^6 - \\rho^5 - \\rho^3 + 1 &\n \\rho^9 - \\rho^8 - \\rho^5 + 1 \\\\\n (\\rho - 1)(\\rho^2 + 1)(\\rho^3 - \\rho - 1) &\n \\dots(\\rho^2 - \\rho + 1)(\\rho^3 - \\rho - 1) \\\\\n \\Phi_1 \\Phi_4 \\langle 0,1,1| &\n \\Phi_1 \\Phi_2 \\Phi_4 \\Phi_6 \\langle 0,1,1|\n \\end{gather*}\n\\end{gather*}\n$$\n\nThough I am uncertain without a proof, it seems that cyclotomic polynomials\n play a role in spacing out \"1\"s.\nThis is to say that spacings have a \"fundamental\" irreducible polynomial.\nBy multiplying certain cyclotomic polynomials by the fundamental, (all?) smaller spacings\n can produce spacings the size of the fundamental or less.\n\nNaturally, I attempted to write a program to compute lesser spacings from an implicit rule.\nGenerally, this entailed assembling all lesser spacings, then expanding the rightmost 1\n if unable to find any spacing, else replacing and continuing.\nUnfortunately, since it operates in lockstep, it gets stuck easily, and I had little success.\nMy Haskell code can be found [here](zero_spacing.hs).\n\n### Inherently Factorable Spacings\n\nThe width-three spacing is not fundamental, since it can be factored.\nWe can collect reducible spacings into a table:\n\n::: {#f8380b9c .cell execution_count=3}\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=3}\n------------ ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------\n*n*-spacing 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19\nIrreducible? Yes Yes Yes No Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes No Yes Yes Yes Yes\n------------ ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------\n:::\n:::\n\n\nIn the range given, this table appears to repeat every six terms.\nWe can examine each of these factors directly:\n\n$$\n\\begin{align*}\n x^5 - x^4 - 1 &= (x^2 - x + 1)\n (x^3 - x - 1) \\\\\n &= 1\\bar{1}1_x * 10\\bar{1}\\bar{1}_x \\\\\n x^{11} - x^{10} - 1 &= (x^2 - x + 1)\n (x^9 - x^7 - x^6 + x^4 + x^3 - x - 1) \\\\\n &= 1\\bar{1}1_x * 10\\bar{1}\\bar{1}0110\\bar{1}\\bar{1}_x \\\\\n x^{17} - x^{16} - 1 &= (x^2 - x + 1)\n (x^{15} - x^{13} - \\dots + x^4 + x^3 - x - 1) \\\\\n &= 1\\bar{1}1_x * 10\\bar{1}\\bar{1}0110\\bar{1}\\bar{1}0110\\bar{1}\\bar{1}_x \\\\\n 5, 11, 17, \\dots &= 6n + 5\n\\end{align*}\n$$\n\nEach of these polynomials has $\\Phi_6$ as a common factor.\nThe other factor appears to be a truncation of the repeating string \"$\\underline{0110\\bar{1}\\bar{1}}$\".\n^[Since I already use the overbar for negative digits, I gather repeating terms using an underline as a vinculum.]\nInterpreted as a power series, this is the reciprocal of $-\\Phi_6$ ([OEIS A010892](https://oeis.org/A010892)).\n\nAs the carry approaches infinite width, the $x$ terms go to 0 for $x < 1$.\nThis shows that like the $n$-nacci constants approach two, the spacing constants approach one.\n\n\nRepeating Expansions\n--------------------\n\nLet's not get too eager here and instead return to base $\\upsilon$.\nIt should be possible to expand the strings \"11\" and \"101\", since it is the fundamental spacing of width 2.\nHowever, we immediately run into an issue:\n\n$$\n\\begin{array}{c|c}\n \\text{Width} & \\textcolor{green}{0} & \\textcolor{blue}{1} & \\textcolor{red}{2} \\\\ \\hline\n & 01\\textcolor{red}{1}00000_\\upsilon\n & 010\\textcolor{red}{1}0000_\\upsilon\n & 0\\textcolor{red}{1001}_\\upsilon\n \\\\\n & 010\\textcolor{red}{1001}0_\\upsilon\n & 0100\\textcolor{red}{1001}_\\upsilon\n & \\textcolor{red}{1}0000_\\upsilon\n \\\\\n & 0\\textcolor{blue}{101}0010_\\upsilon\n & 0\\textcolor{orange}{1001}001_\\upsilon\n \\\\\n & \\textcolor{blue}{1}000001\\textcolor{blue}{1}_\\upsilon\n & \\textcolor{orange}{1}0000001_\\upsilon\n \\\\\n & 100000\\textcolor{green}{11}_\\upsilon \\\\\n & \\vdots \\\\ \\hline\n & s_0 = \\ ? & s_1 = \\rho s_6 & s_2 = \\rho\n\\end{array}\n$$\n\nThe width-0 expansion is recursive.\nIf we continue to apply its rule, we generate the string \"100001\" repeating.\nFortunately, each repeating unit is a width-four spacing, which is allowed by the carry.\n\nRepeating expansions imply a representation by geometric series:\n\n$$\n\\begin{gather*}\n 1.\\underbrace{\\underline{0\\dots1}}_{n}{}_x = 1 + x^{-n} + x^{-2n} + x^{-3n} + \\dots\n = \\frac{1}{1 - (1/x)^n} = \\frac{x^n}{x^n - 1}\n \\\\\n 10 = 1.\\underbrace{\\underline{0\\dots1}}_{n}{}_x ~\\iff~ x = \\frac{x^n}{x^n - 1} \\\\\n 1 = \\frac{x^{n-1}}{x^n - 1} \\\\ \\\\\n x^{n-1} = x^n - 1\n\\end{gather*}\n$$\n\nThe final expression is just the definition of a carry, so we can immediately write:\n\n$$\n\\begin{align*}\n 10_\\varphi &= 1.\\underline{01}_\\varphi & &\n \\text{Carry } \\langle 1,1| \\\\\n 10_\\psi &= 1.\\underline{001}_\\psi & &\n \\text{Carry } \\langle 1,0,1| \\\\\n 10_\\upsilon &= 1.\\underline{0001}_\\upsilon & &\n \\text{Carry } \\langle 1,0,0,1| \\\\\n 10_{\\rho} &= 1.\\underline{00001}_\\rho & &\n \\text{Carry } \\langle 1,0,0,0,1| = \\langle 0,1,1|\n\\end{align*}\n$$\n\nThis neatly ties repeating spacings in with carries.\n^[Recall that when we naively computed ten in base *φ*, we got \"10100.0100101010101010101\".\nAfter a certain point, this expansion alternates between 0 and 1. Assuming that this is true repetition\nand applying $10_\\varphi = 1.\\underline{01}_\\varphi$, one obtains \"10100.0101\", which is canonical. ]\n\nBut we didn't want \"10\" as a repeating expansion, we wanted \"11\".\nAttempting to justify with the same strategy:\n\n$$\n\\begin{align*}\n 0.11_\\upsilon &= 1.\\underline{00001}_\\upsilon & \\text{Carry } \\langle 1,0,0,1|\n \\\\\n \\frac{1}{x} + \\frac{1}{x^2} &= \\frac{x^n}{x^n - 1} \\\\\n x + 1 &= \\frac{x^{n+2}}{x^n - 1}\n \\\\[8pt]\n x^{n+1} + x^n - x - 1 &= x^{n+2} \\\\\n x^{n+2} - x^{n+1} - x^n + x + 1 &= 0 \\\\\n x^n(x^2 - x - 1) + x + 1 &= 0\n\\end{align*}\n$$\n\n::: {#ad56d552 .cell execution_count=4}\n``` {.python .cell-code}\nrepeating_pair = lambda n: (x**n * (x**2 - x - 1) + x + 1).expand().factor()\n\nMarkdown(tabulate(\n zip(*(\n [[\"*n*-repeat\", \"Irreducible?\"]]\n + [[ str(i), display(is_irreducible(repeating_pair(i))) ] for i in range(1, 10)]\n ))\n))\n```\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=4}\n------------ ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------\n*n*-repeat 1 2 3 4 5 6 7 8 9\nIrreducible? Yes Yes Yes Yes No Yes Yes Yes Yes\n------------ ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ---------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------\n:::\n:::\n\n\nFor $n = 5$, the polynomial factors as the product of $\\langle 1, 0, 0, 1|$ and $\\langle 0, 1, 1|$.\nThe second factor should come as no surprise since we know directly that $0.11_\\rho = 10_\\rho$\n and we already evaluated $10_{\\rho} = 1.\\underline{00001}_\\rho$\n\nChecking more $n$, this polynomial actually seems to be the only reducible one for quite a while.\n\n::: {#7c9366ff .cell freeze='true' execution_count=5}\n``` {.python .cell-code code-fold=\"false\"}\nall(is_irreducible(repeating_pair(i)) for i in range(10, 100))\n```\n\n::: {.cell-output .cell-output-display execution_count=5}\n```\nTrue\n```\n:::\n:::\n\n\nThis bestows some level of intrigue upon the repeating expansion of \"11\".\nSince repeating expansions are required for base $\\upsilon$ I will elect to not show the expansion of the integers.\n\n\n### Weird Modulus Patterns\n\nThis can be generalized slightly to match any spacing with any repeating spacing:\n\n$$\n\\begin{gather*}\n 0.\\underbrace{10\\dots01}_m = 1.\\underbrace{\\underline{0\\dots01}}_n\n ~\\Leftrightarrow~\n \\frac{1}{x} + \\frac{1}{x^m} = \\frac{x^n}{x^n - 1}\n \\\\\n x^{m-1} + 1 = \\frac{x^{n+m}}{x^n - 1} \\\\\n \\\\\n x^{n+m-1} + x^n - x^{m-1} - 1 = x^{n+m}\\\\\n x^{n+m} - x^{n+m-1} - x^n + x^{m-1} + 1 = 0 \\\\\n (x^n)(x^m - x^{m-1} - 1) + x^{m-1} + 1 = 0 \\\\\n\\end{gather*}\n$$\n\nIf the polynomial has factors, then fractional systems where those factors are carries have\n repeating expansions of width $n$ for a spacing of width $m$.\nGraphing the tuples of reducible polynomials produces a strange pattern\n apparently arranged in lines (going from the lower left to the upper right):\n\n::: {#3c04b6a3 .cell execution_count=6}\n``` {.python .cell-code}\ngeneral_repeats = lambda m, n: (x**n)*(x**m - x**(m-1) - 1) + x**(m-1) + 1\n\nplt.xticks(range(20))\nplt.yticks(range(20))\nplt.xlabel(\"$m - 1$\")\nplt.ylabel(\"$n - 1$\")\nplt.imshow([\n [ is_irreducible(general_repeats(m + 1, n + 1)) for m in range(20) ]\n for n in range(20)\n])\n```\n\n::: {.cell-output .cell-output-display}\n![](index_files/figure-html/cell-7-output-1.png){}\n:::\n:::\n\n\nThe leftmost purple square is the exception, which corresponds to the earlier $(m, n) = (2, 5)$.\nEvery purple square here is a reducible polynomial, the first few of whose factors are:\n\n\n| $(m, n)$ | Sum | Polynomial Factors\n|----------|-----|-------------------\n| (2, 5) | 7 | $(x^3 - x - 1) (x^4 - x^3 - 1)$\n| (3, 11) | 14 | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{10} - x^8 - x^7 - x^6 - x^5 + x^3 + x^2 + x + 1)$\n| (7, 7) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{10} - x^8 - x^5 + x + 1)$\n| (13, 1) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{10} + x^7 - x^5 - x^2 + 1)$\n| (7, 17) | 24 | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{20} - x^{18} - x^{15} - x^{12} + x^{10} + x^7 - x^5 + x + 1)$\n| (13, 11) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{20} - x^{18} - x^{15} + x^{13} + x^{10} + \\dots + x + 1)$\n| (17, 7) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{20} - x^{18} - x^{15} + x^{13} + x^{12} + \\dots + x + 1)$\n| (17, 17) | | $(x^4 - x^3 + x^2 - x + 1)$
$(x^{30} - x^{28} - x^{25} + x^{23} + x^{20} - x^{18} - \\dots + x + 1)$\n\nOnly the first entry has factor that is a carry associated to a spacing.\nEvery other entry appears to have $(x^4 - x^3 + x^2 - x + 1)$ as a common factor,\n which is the 10th cyclotomic polynomial.\n\nThese solutions also have sums which increment in tens, which correspond to the\n vertical and horizontal lines of purple squares in the image.\nBoth $m$ and $n$ solutions work in a similar way: the symmetric solution (7, 7)\n has similar solutions (7, 17), (17, 7), and (17, 17).\nThis pattern also holds up in the \"next\" terms (7, 27), (17, 27), (27, 27), (27, 17), and (27, 7).\nIt appears as though there is a congruence of $m + n\\ (\\text{mod } mn)$,\n where m and n come from the exception (2, 5).\nThis pattern is similar to the one in which one in every six spacings can be factored.\n\n\nClosing\n-------\n\nIn summary, the Fibonacci recurrence can be generalized in at least two two different ways.\nIntroducing \"0\"s into the carry is more touch-and-go than would otherwise seem,\n though they produce (with much effort) valid bases.\n\nThe [next post](../4) will explore a more distant cousin of the Fibonacci numbers,\n and other strange power series which arise from its discussion.\n\n", "supporting": [ "index_files" ], diff --git a/_freeze/posts/polycount/3/index/figure-html/cell-7-output-1.png b/_freeze/posts/polycount/3/index/figure-html/cell-7-output-1.png index d714e0fef63edaed43e976ea28001ef5eb3a1d87..27ba2cb4d6776cea573a4226bcaadb261c44b80d 100644 GIT binary patch literal 13267 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 literal 26603 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:$L~?B#9ecKWKy-6eb;HJpRZe!FQsoYC>RTA zPc1->#rAs@VfCG|MVxyT(MR^fBTnh!0|&fTmw_wgrjSJN^Ups!is*pemeeI%V6N_a z|5ipo#Ezn-Z)L&Hr0RiZm2Hmeg76nIC|)^TcgzO%?QF<7uH)EynXB!}Dhv5!gEwYJ z827dm-}usU&(c0MW9krE;1p0*z=WmP|j(urE?{d!vTz49F*)Q)KCW zfxkzV{w><`pXxsawDRWq114gHZPx7oST)FAZD}2u|Bcn)ib_vcLyVFL^kx;{cbXg@ zV%upE;I(@911!1rwusm`?j+!?nJWNZ78KG!DrA{( z5Zx*c#aq+ff2wWBu!@-8FCf2UZ{EB~4a2I0R$=1(6Z0g^FbyP~9@h#S#IL9}>F&QL?2nKzs8>w|pw2-E$G$aL7X4h9)yIgCTysU!&tc?JmfoWG!< zm%$ru*D5(tQ<(!)FJ zKM!P>X4dz^(oXw5{K#OPkpR8M8mt__1+>A-1{oy{IyH9|la(Q~2w%2tEq$7tV_Xrg;a#78 zCX_2mzvwQK?0loCS92NlKafV0X-zye3{c~E9hil|bS!7%H~zxZFw^)9nUg2Se97^~ z<}7?F+t$`b4a1vT$S$Hhe+6G9z}LpKy10OV)r1Gk1V73}0S{J%&2v(RL163w&C+oa zWbFtbZQSeEuOXCqc~!5n%)XB`H`0~4MTY>aw-?EagSJSB*7k|f9@PZxoTbS9U%s5i z7TmOZx4O6Zpl?!g^0>w`e4a^YHH+<>xyMM^gG@UeHfH@_3>)D7p41L@*T-OsLUp>= zI952tdo5l$6&94$^PF>jT*$@+9s-n6R?{qYhHlA2+5EaK_O0*fdkmSv^Wwje=oW`# zuYx6LyLo^^0gr)b&jcF#XxaK1lmtY*f3KOL`C#_$F@tJ?tXl<{QGB#B zIkUyzv=U_^-og=YiIK>&XU__qd^QW(hYW)Qno7=}(`as3fUiED{^rP0lyqTGP!}n; ziXQ9|4>rRTM0a~b4q&tvpATyMP`so_m&pkYJP(}&nqdKXe-5(-3=6gteI4di>#EOE z4R)Ex;4*%Fn+Ld>f{L>$)LUXRg-FOyOAUqAlN%`gkam0tD!OPwVZXewHnTlCrrpNt z!i67bUk9EVKz0i1I+=f^>iqlKQN+*iJr{qR&9{_%^Ty}2b=5@K7^qTp_x4uR(9p;! zNpv0`3E8TP>M&WWPUw`TW`LmsuKX7dMiSgV9Op*JTb!@_%EDD+Hm^e%>V0Zab98Sy zVld72$Purany9Y#hCX}99o;Xo3})$Q%*zWC41Ne*{YKuARYLZIoo%(+$p(i#U&LwW zyi3+nR{lI-6L7@PQwNAmJD5>ieCc&yN!}9E5HmZ~r0S5Ww%x<{?5~Gho`1au=snO~ zf1KKn>|%s)MQ3la%^JvR953n11Yx-GNWivbj4bc=rS9th^|2w1gJLMLu?l>oOW+P8 zP(2$*p7T4eElR44*Af-)D;A`S9q6pdn@F+ke0v{Z3-FOb#jae+%BoH`)oiUUh*lQ> z(!>1}_YQp>aNerx`II*y`vI7#qo_Qpx;a52Zr;3^=zaKpUWr@pY5{!u3CEuC)ro~4 zP@t9LmD#*tKNl(M!$&Y_M|B)w3jwfNEnPeL@S5Qs|pIk4tR6e zLPDD?^xabw z^?sJV(1>8?cYPj-8CG=r6peMbK-a>HG&j4oz$to#9%Y|j-4Zq`T>}|88qe`~nne}l z>oCyr2dStM!$4lV3m{-k>JjQVV=S$Ac%&(#gnWiNV>~f7Y_N~91$huykn4~b z?^hxOFSf?nU8~!nkY8cuj7Rj1g5Wj{#6NpTmJUN5g%mcyMHzWx>8$s)e69B!5rXgr zzYNU`^jwh$pMngC9H0D;@~9eL$zBy>VCWOfE-M674wLoC^j8)by4(GyY_<2(>RC#X zr?uplCsxlXz41Q@k*xf>fuiSBR8;Qnuxv0JDNouWyL3|@VUb^tv`Pm79%DU2=Av$62=ke2wB_U zG^91&eJ-zJAG7%9J{xiXAvw>%>H=sZCg8}4D5BbPk5SYAS0~DHx3}cWY_2lL3jS2X z?iibR@L=7;hzMC~d}jORtvb1yuU@@E2&n=0J^+B$o>atli%b05hl?V1Ur(*cB@2*g zZM?#=#3{);8amB@{Uod_QK1LC4^e|0x_4i`95~u!S{>^LG`XHa=(E>%c%9}GO*~|e ziL!LDYLO4WkF~+mn@|Q!yeXiVP+)Vl0cmWTvPKa5#C?;8FA(9X&dZ%T6*k4Bw#OuR zd?v_rv4%&2|H^3Ww2q9e0z5oX)q1z6R8s6ixR<@FkHB3yEW+m#Lqy1|5;|GQi&41R zppySwYk`_4?nSC`g$$KQDp0(6L_{)6YR-rR4$LR=+nQ4=vxIx!Ch7&TK9pD1&}grX zA6cMw7&x+}R>HPZ?a6k=);K&Pn8l$ZE=|a=WHo~yCbVF8eOAoTUu41e7TT{Mk67yEPev?6$_W!p`zj9C zRwhKBlyg1WT>x4{Gy=0mh$eUUd1Nn(+IE&6x6I*25=ShPlIhd<6JJc~v@hldjRMHs zeE2N%u2w)wNlO=L>B~SZ1ZNTukN>>`L$N#f#k}Rfn#!oxVMuDvc$2ij&JIF4G0}v4 zH_^=4s;i)&04}AbwJbCy@BIEt_5zAs=w=cT7&qv$dIAq;07ZgY8?R)oP{*wi# zb*>Rh7Em{LR5fdu{8_w9`=Fn8{Fxc2de;)NGD6PG$2X8Gs_yTbBR=%rioRviA_Drj z({Qs-Py$KSxv{aaY(o^o<(&r!mp0xPJgE#L8u;=sY&EBeVLF?HV>)mL7lp)BaCau1 zql`r@^1}#gA~Z5n6f$hWCbune22^rJ+GFTqoo^QnH8_w*pwyKMSQ*qOvUTelrR?Z2 z+T@t`*S@}#(;xT7sU_~^Rf*kY=%S|Pi+z~US3*>6rei;dtY5xrRm`hf8+rNoj>z8K zq5zQHaK33_Mt!%G_KpvK+w}t`c1E`0Ba@q6octd-P^yvD-HvxNGSCr`>onSKC^^cS z_EpRE_Y&-zYZvNXF3RchIvsRuH1#bQkG(%O?Q%WwiAdk0elL_k1@OY&645uizq$Z7 zdX$iJj$L(WN2%6GmNct;ZIpb1d)BS1%yBq(RN$V3ll>ZoRngTPH#ev!EiH{4|8;3H z*eIvbuC(abSTTA!iaG=qU-xC(K@KgNq|Rfy?|Ejm)V80ZSQ9y~BgVP0tQXQPm`h6l zN+8m9knUZuO*rp855|*|Vcn`*bqyJQa$=m&rL=_EMT$e@nJ%6?LrXX@*Eu_#k->$y z_NX&ZU&z|z@#_6+pvr*{+vrvLlG>893*j{m$G*xs^}X2%vcaV6!R1Wrwg)WhWm*v&6e5lUE^sd zGgXlFHdo&>+6@XFkD#CuC@WQ%*ht+2!Kh|%Y%S@t3hl+|+w;m;RQpm?o z)%zt03GBft$VCYhu_<5gEvC!RxtN~1gOJ^Ys!LH(5uPIfh!M&N@`#CP;=^Swuv=A)I_65;XDs$FP1XB3Z{NL3oTkA4*THBKY96vp zNjHPsxUd?^KO*aGD)j+>?zg?v$0wftK+6vx!6sw}VLZX|6nd_TI4U`=OzrPXrnTpe zb|>$i(h&)F26zwtCjQ~nTQqM%_(rP5Jx zeJkR_V7edvS6iIc!769~JIy{S;m8R;BLZyZSwl*){rf{l8NQ2jrYW!k?|N~`{1KxllAfY34CAhW}c0UD+Lw@wd&<^Hbo zfBDICOt-cam6rsHrku?GkyevxUT6LFGlin4tsMj++SJhndxywT=AcAK@_2f2&M`H$ zO+a#hgE1g4h)64JQn_g#gZ^`suZ(nm8zk;f2~=;N=K|AkCK7W@y${e7_?aAdF%D5E zWx!`~U_@$0HOSSn#mhLD>cR>r3?hCZ>-Mmc9%Rq|;_eEvA{7TniTTP5m0<0ZO>?di zFk>`XQ!{^DAfIL1#YF)zXOCi^TkBhO!TiK6vao$k#$i>BG&@SR{7x6{PO~DhBhv4W zv{SB(@cQLo+$t-TkN(uR6Sw}W_iNruMv--ivDuBv!>$>MZr=R5kc-^Zg=LV?8|>)p z6vKJy@V}cKA%|bHQaJk9l9>-5J(4F$85G@P>o)MyaNrPVm_Ta=$xEcZj#Ui)Vlip-hJ+Ud1x8qm_WflCI&2!EpYI|k64HdaaRB0CW>;#Rb(81L*B?*6WhYr& z>c#_no3Ipk8_{85`z6P|T$K3sVdg?k2~BXcgiGv)-L9%58_`nO8O6xRa27e{i8H?sHiu9yUWbN8LKmGJm5V5Xh5Ob)2ULmphnl$F-074VXopF7p zjYj(E`?(|Syp(d(ufibqW==0>(rl9?dWnLZS%EsP-P&x*;w+xfF><4&x9No`!mS1Pp7y*yTOD6??4l4LET)nEZaDV(N4iQtt^${;bB6G!52{lKGUZA zy*da*7?N)Zf%MM`B~Ny)uBU~}mfKSd#oK%sLH?Or;eXi%6sxdIpeX6~ty`g}P7eo5 zXpy?#!vmJX8(?Leot<+^j;pCfe*1QwW=H(1H4M8d+g(`feF+UW&{~$?Ll4|-6;4#< zp+0hdM!sxS9&c+Ah9mKMj6h*Z1k#(lC95GxVwru8IE4=}v1R^8Ho_?vA`el9sbMJL zUg-#sL?d+Cv%R`tif$O`azuYZIw~F;Y!DNupU$HE_>Ak7IE6QE!xhLyq!dcAsMjFg zlxYLkV&a*AU7WxKB%~m_7S-%a-jt8+_{BFOLU+qVljjaYMU+{g<9 z8fXRlgI%7ID=8`2Xw`X{;el(pM^^sgv#>gzD4$B0%v1hLqt9%|SVWKizN{wOh8xt(WmAB_>QFZh`!TJD>tsWB`CL8e$u{DuZI*`_HehsADI(s??1s zkNmSE-}Cx(AsaiCLEO|pCmlEpL}_q6N+4IWMP6LCI4pPQ5OvzueLg3dJoiY^e=9tS z-G&ulN)US(5AB&(HNJmjH56!JXQ*u7b`vI_Nfao&6Bf@tGs}kT+TU2`p!+t}8r<1O zK2!yJT`g2nvAW!bouoH4-!#L&<%CM>L=Z=~}qhz6UIxXZ|7hYlY6k`1yjjYuKr9g4PW%q7VT3_R)8 zD=wCMgJwgh&eX6K+UK8kJY<-;g%){s@7DcY5;MFaOV!oYMQ_DTjYiVcGX9a-rIh{L z`;W54CK*%eyx0MPCbzw6q_LPX^434K;E`|LpX&E{!Z8uVqL;{M(fhlds5F+Dt|BY{ zjjjJ5Ic!WpDJN}d{`{E~1K`h8L2tpy0;}%l)4T96d#Z*f&{;rwZ(w+e(Rgfh9|}$k zO1I3m@O%BQc@t)}+#~ON@z>w(;$WK6fAizfYRCdC{em57n~Lof4G<08s2rB6j>X{*{AuT^89&&bwFhPq%-js_Y4yGZjGP*$JZDc=@E?+bso_EfHR0KnP>XeOV@jjU0kWjfPfCfa) zCn*vU4mWuS79PSNSknW~wUZiPNSO4u=|F2d%BZxNM1`YiZo}x2S%QyKxzPB6dSE{| zTS>ZaPu`?X&I_zpAwHm9v%KM!dqhXprF0Aljcf#{!luU!e9FUa@RrXg9i_U;NBxW z3@F=G(5_itUf%z74(EBBz~A)SRrQd%m}#*Pqyj|UA}j5PhY#%zy{(1J9fq^2pjY}n z9B~g}5dh~{HB1cT5{6`}FMgjcoalu&v5b|q%})H(%NuOoaqm>If*^Fw5hKTSEkzFq z={d2e&!kY{?JBvqR7=KRlGz#y@}*ug^rh1dv6 z795%?(6qp|;2%I)QzsW)-3RoynU073wm*M4#K;_v_rGO-5=NW_5Q7TiYoPAyF(S@l zkw1YIHugt>$zZ?L>JY$tuE7f@R;p`DHjb=kw6**g4#{qs>_sC6>F(v?5f{%Xk&d z-DZ{sX^G?6u|oxIc{?J=UR)dt`+5@kZ_R6yq^ZR2%(H!ad4m*w#dJXhkXztJv_U>s zqlK*XcaBVgf#g4cHoA!Lxm7)BKeZC9+`^UHLK^760u%0xCv)(O=>tw;LP9U=je>Oy z@WY4PBpI2xRRCDz)`r7h+cZfbOgL%a)UR!0DJ_TlsVBRD2pFp*CSK_hj*628_KU=ib`3)hYLQXbS7yL(0qEIGl zVpWVP%rXe;!B!6I$@QGS`2Vh@_pf$IhjkD%jE-v?gXEFlfp|zRC3yv2Ijfdp1rR4E z@(9<$wDt|7*>|oI_7?bHI@=JvxtT{mAhFttEE}}#gu;TT*dzd&7P%-F2<-KUOx)ey zt5!NR1}AI(Z;gY0tZ{9eX~ge$rm3(EbSpT7he6IG#-z!ZM><2@IHhm}$svjDI?{JNyd8jPGW!zNDdAON4 zdq6-5xlA~Y52oeau{IbqfmAqSSc2R&gS?tT0@3hCRdtL*MZ3u*Y+5Y`g*$H0_qavI z^W+@(0_~@EZa&Cx-vj_9ZVH|q3>{S*OE@NiY33=$6@}B@Mq;3Yjfg@8tuat`fD?lZ z5Z>vv9FQlcM?lO+P6Fr}Dn3h=-bfSYWF$%OaOjSp^Ok7ir~qZD{U0teo4~KFtwZKP zd~3GN8XxW=*Zqh>9G(=IXi{vuG>Eqomd<(Q*I_8tvTu864^!y?G}i2QqL)b-fk-SvTo6 zz1e)5HhnQO)Yor&^2^Min(x)ik)uazfXGNs-u-=7H=~gV^rQ-WW`jMA2@hp`+WicJ zumB-c92M)m^h*y3N>Y($)I819^WbB%Gl=Em+Pd{HNvV>Acuw@4UWe<2U`pB z7tQaRBqj5X&}-8ygURwk=Y}k4T*a!fMl-)L{57xNyjj?}libjn&*;DV6){KzHoCynsLIpy)=t&31Okd(mmfD0eYzzDa=no^KbkJaiu9)p$sIyCYT;P2so)ZK^Q``h0 zxNk$Jg(qT@u<$Vu3wfmTgP?Ypp`@7dmXIsE4~p_PE+g$cG=1ibjP=pDDd?k6K(hx; z6jL!&h>erW7&S5J6}Ds)0zwCoO@?*<=$KrdE=3N!cR89tF^a=bbjOa=!Y1H&}@(vG+E zYX}hF7lW+?(HQZ+3M6*Q`CeUOAcf~nBiAwGM`n&#D7^?ob`49Gx72&1&o#X;0g{Z1 zi!8Z0GtyI^j-A|(P8f9<(1S^ctFy@J%GN9N=1hP(48fn&a4^1WYlWs>mLgvhT7dQ` zqDcNzb0casX83YT;n3IU$|cTK0D5ZJ#Q5lxiDJ!u%ttZgbQwzomBURzgh>6Di!m9F zT5al5PEL|NryI+*fo3VII4T*3%yp33QWDrPu$O`H*sjV9u_nT61M|Rn?G;Oxo=;6q zO0xd&WCpDRNDkea=e6l{I%y&&tuLfx!^jszClllrWC|ZNiO-{;V7w({)2=+TkzqfO z2c7vAj{Xk6l##^m&YJ0v1g-fod{!onoXeMo6MrbAmZ1X-@p7SZD6ej=5jt;zTqf+C zM%p6Y;G|E@3XJOt7+=#a`=hfZL!1uj zMHp8=WIjs&P`#hL?`DZmys}}mT zUy-xf7oNFRss08}|JQ@3qItJh9o|Q?9_crxv74;Wvc9=)onuzUjpIx99o)bFlE}I4 z&Kj#i5N>1JL|oS6TTvD-m3N+sUPTVZx8?1xhj{b3qsz?@GW66n{ho>aPtFLiN#x`C z|69E^_NF=#A#nykzaxnr(?zPWGgF+$?L+bM{tF{4(?`^WzcGwPNC`6R#28(&1FAQn zsn8OxOAs2+iK-8umNmQ@9pHwx`$z4-h6msq8sj)Zib9*dzCQ7q?9v*9W{*?RC3%zM zmPqu6QT!i6I;hOFF$F<_ei7?i+GyK#)sY0=Es@-KE6?Q^Nyi(5&hI4(4^koOBlP7F zcQBa@hSSLO9V~}?tN-PC??_0ACRNdQ2uD`Lmn8>HUKx<8F}{h`TdJd%o#6L_K;fu; ziIhiQuED&5U7V45I!>%jPH&dFooQ&4-00%b%lLUuLhvog7w28{w+k26yxtoMIcR~b zVu}v3adoy`pNIadqM{gq>s-A2{4}-YMM<&5NtV)b^OUevZ69|JVeCcfir{rqutkx^5aqGh%R#>K`KW6OV?ojh9utW^7$74;Mu zg*Ahw+zk0C6^TL1lp~_T7&iYxweaR5pW|g^Wx_4S@WiA*w$0Nl(rLPn>(vpQt?Mx~ z5b(=NI^&ikIkj$1)-zs?O0}+zruVC&-=2BmDHGd>;a#V7?ALd(_k*;keBarVLwM{yHG|ybxO*DjwE(WjV4vdU^nHCAq~W0?uNrx zGF5|2%!vacRL7F2hNCYIO_nhzS7*=^(NEApYXKUlMuoGLqJlkc11#@q2;&e@7pfje z&zGeVSAGXP!>KS1nZ`VNRQfL4E}0ZRuhB31h)W$@Sv7#-4?)IwZG-{genrs5z(_~J zaiVD3eEG14S5UA5y%kyb73P>h#}f%opnLb0HvY-la|_N%(94#b6dN`T7Q(OoE@ZfEzOe=%Mn zt1=825>{G6e(uN7WSVbS!1fDig$93ghl_Ys=gk)#O3OhDH|a?W6C663pqa7#gWtbu z#@S;UHUgN#L+UEw?w;RFp4u^Cm)K6&1+dUTHDmzb*4@O;1NVCeX$-`&Fn_h!1E>aL z!?-CpZQt%Z)u&{TBACn@T!(|iYTw$VnbodqE8Zo9-V77(jOM$?#p+<5SYQ;C<1o~Y zy2^(O1ei4VQpp})SOUe-a7PVWxN3(Hlzj=UikjYSjQ9F$2>N9rD^{W@J5O*}&x1KN zuaCQt>|f@7S`>ad6{@JOyaaOLRFXM?8A8-Bh*G?}cW1oQL!3vq2RCH|WvPe$d~RYZ zFm%AAgB=@&y&2B9x!SJWc3;_l6x zYuk!-q`-U?#;;;!<)Huu+{*tLIp~YtE}AWn?T79g7S79ZiSPY3qx@p7gl|Qi$t6@7^x8Yga3;zTZdFKbV3ZhfhEc2bd!LevE2kp zCJ$`$?xl`5Id1aor8+f<={a_7(p~tTF$FRfo@-2jteQY#dIdSxa6a(;x=&Nn$7=6} z!Y_knyebTyNC265kV^W!7O{)0d?R4lAZA{ld5qBZpy15=-w9{*`2s zw0Ays7_w+m$2giz6cDM^D6EC>Rl@AUOOF2gYmh3!M0>K8Fz6tz*Gy7nAR&xeTlX`! zF{sxdml-)&cm3#AS7>yZ%mKyRkFyz<1ndrSF?XJ7(R||CVvHPUSO=owye9Ueq3Fhq z8$llgc=S!Oc<5y>75l^OYyNAb`+Wd8$fv#Jmj}D3r&*weTGALqePB{+o&?x z@aR^}^inl1Gy$BSsIx-y^8xQbXctUtpkQrRaQkRJc>Gw1jJYIZyPPLS8|R1}h0RjDj?nwP z>7WlCQfVB9hxI&$I17g-=T-}7&+|GXal7#RtA;Z{0=c$N`*fE7fP+*fJKc9Ex<~pa zTKL;0F_rKS7RLvIzZrWK+nd`V1^4=Ir~SwzjO&4=Vk6T7P>qt6f*~s^AZm$TOh&Vy zFfNBBS{O)Ut9JI=gW(`q&Zi;}9gfq<(d}(FZtv#zMOu=9BADmV8pe%CXf_)cJ8d{TiYi^=;Sd!XCRcvSjT-{XR_)? z>U*5&c3SG{QFs-z#E#pnY#P6KW zaxNBq7?2HmB;*KT1BZ;+@cSqK-Q!h~ktb40ZlCyjGtt#chAXgTSsW%X(h2rBQdn0) zDF7`B3W426?9tHwO;N)WS`;n*q-Ur9--wfSBJl8ynubz=3~t3yxiTBh&|fGd-rIq zH2R=-P&+^h4vJYuWF~+|JYJ)9E^uR3UX_iQ5Fn$7%$)DIa(vurL@yx0bi*yZ>^zqv z6D#Q*{s56Z-jYod9Q2%5r%XJC2I;4UR_a`4P5hBhLZTtrY0yNzYBvO$Fu@p8%uw1M zl5s)nKg>w934)vxg@4fkQF)y|cjcE3l19&FXp-h-556lCePGoW-i+LDe_%3%{MQ5P8_yk-9u?rfl&_45zE z2bWEZ%-!iti)`A;rAhd$&rBf<1sJCBE=!jRqy+9jb>TOB9=!uEcDdxrvo~=kH#tUn z^ip$>H^we26tJaZ?Q8~7M{3UF9f_n%sN{W7ov-B?9$sEDg$q-&=2OZM^Te2k7wiC~ z+3)y8h?kf5Lru(xAlfwBhUJI7^P*3kI(6Q;%X4SL-1DjL0>(9|$v*K5m;Od=H5m_X zNcN!#pQ-y?8*QOVLVTeIt6u-RazEyJ)i@2CsRs0_zC<{PmDSW%elerM{>n^RaNgxO zq#X&^wHCeLWS$(R_JXjAKwsnz3TY1U{2aAN&vATPi7LPHi}SBKcX4h;LhnIBcR2~{ z5dv=qHSAx_OOqFr2a2y2wqm>qnTJ5yDkPHRIuY6Og z(%B5Gk}}ckfZ1*|TRAzo5Is8#x2Wrrybl+A{_gp^ea{YF4d(CX4^g?{w7eZP50SXJ zj6waS8l3bPTGZs2f66|9d2o7LF+eEE^c)hF48eUB1Pj? z>ANGxXg^XX`Xu9i*@1G03?9Oesne#JZz4>ty$1;yi6A1AgrUnL(YiGz*9;|>wC!as zj9pJ7jeK*K$`@IpJw?S5=c9it8_UY=q6;JnKO z>rR0})sr%@EN&2jAcJ!_e%bTAy$p7S+rGY$WKt^}_I;IK2(yO7B248K6&(#|8=G#D zsotH&%EiUCY30u1@hQLI|tf1Zyw(mEB+-r=DNWc`a zcTyC=z6}&CIXX*B2@~tE&qIL?OiM%dpj%2A#c!%beKahl6g14CI>A61%V6HG`eF+z zSN3$QWOoy2@Ui;QBw&bJDWq`t#K>qBr{52FKU5xhL~ZAuvE9>u=lAObd|z7Xe>LPR zgs7TyIYXpMkQid2cF1@ddO@6I$kuEjSuHDNC*YD@A$HlXgq+9D6K;J5O-c1whTNMk zc%~y4Btt=uA15ThO)<$qpS-c>@Z-h`90#8o2fW7mhR~L>R4lX$pA=Z&;0{>E!J*yJ za}o_L10VmOR#V;U|6Y9>HXzA5{fT!UBN zFJq%Axq8|BjN59Wf9?@z(8)VDv6{hq;O^yYJ$i-7T2p^?;+J?7uw+y+8CL*4g3MAN zZXVLOj44?s&g~D-2ZS6!1^gHi9;pdIT$91ZaPC#2A%~2|2kTT0bkOBx5(5|jrDwzk z!}v+ZBup-9zyXAs0`j#%k34Z|ks@a6FeV>IBY~Sdy)b(O_~J1}od_G3?8)ib#k7wiI;TVMShM%(N#d;4LSNT^4G#CRygKMA5EXYC9oGQEn8I_)U2eZj<} z$%OGju0KXY9&X222V_0+`m&msm`a|JAr?kbf7&xn=AM6JF<^XPiaRhlw}9!%Y|<2G zBt)7_raI$^stxMJ9=W3m)e5mHv5Q!jzS-Fb1tZ(40c^l_PmodQw^T*{w=*UNv?DTJ zKioK*DP-*l%-$+BGJ|=f+^=p3jvpIXNKoj$OrFFfI(rz;`a!rJM|G`;rDcuQT@y0d zKEMzvaOU`69Z@AARo8q@!;P#VRIv~noJ`a(6y*=Y!XhCPl6gKDAhQ|G2P`DHX2u3THbh^dE3-tTtl!12N{QHb{)XveF1t1xp*@bWCjyV4W{57Fzoi? z)<$NGyI~x5DX0|K7q}@zTR~OuiRa`op!0USA8Rmc2%^v@t3zsc5ON(-i;9Y7-eqMf zJw5eB;;L!;c$HHH&f#eBlIF7%5v5cU4W~!x>2H(kK_Ac8&dSan%bqQjjXAOjF!%?T z%wU?!f#o3;DxV^MfILo&ojm3shd9aTQwGS`=ShziX?bv+kBE`#{g777OLXF{1b6zgGDWnLgqRzx;|jdh$@@NcKd%5UH%|f|GodnOy}gxAFAcc Ud^Z`aCf7}oKC(Z4?}-cl2k84{$p8QV diff --git a/_quarto.yml b/_quarto.yml index 21423c0..a13a08f 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -2,8 +2,10 @@ project: type: website website: - title: "Zenzicubi.co" + favicon: ./logo.png + title: "zenzicubi.co" navbar: + logo: "/logo-vector.svg" right: # - about.qmd - icon: github @@ -16,7 +18,7 @@ format: html: theme: light: - - default + - flatly dark: - darkly diff --git a/index.qmd b/index.qmd index e15aa83..e6ddc6f 100644 --- a/index.qmd +++ b/index.qmd @@ -1,6 +1,8 @@ --- title: "Posts by topic" listing: - contents: posts/polycount/index.* + contents: + - posts/polycount/index.* + - posts/pentagons/index.* sort: "date desc" --- diff --git a/logo-vector.svg b/logo-vector.svg new file mode 100644 index 0000000..d14aaf1 --- /dev/null +++ b/logo-vector.svg @@ -0,0 +1,55 @@ + + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6891c2f0c84734b528b7bf75ddb37812c44d51fc GIT binary patch literal 408 zcmV;J0cZY+P)IaGwyQJd!Of?b2!{ol`cr~6w5frW2{%zfvW0su#5Z6 z{SNl3N?#}WOY~za$vr&51>DBLH2&ZO-!XPu2P623LyTjovjaT95r&$24rh4L)xksj zs;b|O=x2Pw&^3Z2caywIGT7>kR@EU+ldL6qmSnyOaldVI1m95jf+=j^b?eVdtYYS> z*LwVj89c(S{W?kO{*Tn zX0HqeTFNW