.TH kaktovik 7
.SH NAME
kaktovik \- Kaktovik Numerals Practice
.SH AUTHOR
Artyom Bologov
.SH SYNOPSIS
Kaktovik numerals are a surprisingly good counting system. They allow many arithmetic operations to be done visually and effortlessly. Though they take some getting used to. Thus this page!
.SH TEXT
.P
Sorry, the demo is only available in HTML version of this page
.SH What is This?
.P
This page is a small Kaktovik arithmetics test and reference for me to augment my learning of
.UR https://wikipedia.org/wiki/Kaktovik_numerals
Kaktovik numerals
.UE
.
On every reload, it generates a new arithmetic action, out of addition, subtraction, multiplication, and division (more to come!)
On two Kaktovik numerals.
The goal is to input the right result in Kaktovik numerals.
.EX
.P
Not all fonts have support for Kaktovik numerals.
Find a suitable one if you want to engage with this page!
.EE
.P
The keyboard below the problem is both clickable and keyboard-accessible via
.UR https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/accesskey
accesskey
.UE
(in parentheses)
.UR https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/accesskey#:~:text=activate%20the%20accesskey-,depends%20on%20the%20browser,-and%20its%20platform:
(See the docs for exact modifiers to press, they differ between platforms.)
.UE
.SH How to Count in Kaktovik?
.EX
.P
Note that Kaktovik numerals are an inherently visual system.
So, if you rely on a screen reader or are not a visual thinker in general, this whole page will be quite useless to you.
Sorry.
.EE
.P
So Kaktovik numerals are a base-20 (vigesimal) system, with digits denoting numbers from 0 to 19:
.TS
Symbol
.TA
Decimal value
.TA
Name
.TA
My contraction
.TE
.TS
π
.TA
0
.TA
kisitchisaΔ‘vik
.TA
kis
.TE
.TS
π
.TA
1
.TA
atausiq
.TA
at
.TE
.TS
π
.TA
2
.TA
malΔ‘uk
.TA
mal
.TE
.TS
π
.TA
3
.TA
piΕasut
.TA
pin
.TE
.TS
π
.TA
4
.TA
sisamat
.TA
sis
.TE
.TS
π
.TA
5
.TA
tallimat
.TA
tal
.TE
.TS
π
.TA
6
.TA
itchaksrat
.TA
itch
.TE
.TS
π
.TA
7
.TA
tallimat malΔ‘uk
.TA
tallimal
.TE
.TS
π
.TA
8
.TA
tallimat piΕasut
.TA
tallipin
.TE
.TS
π
.TA
9
.TA
quliΕΕuΔ‘utaiαΈ·aq
.TA
quligut
.TE
.TS
π
.TA
10
.TA
qulit
.TA
qul
.TE
.TS
π
.TA
11
.TA
qulit atausiq
.TA
quliat
.TE
.TS
π
.TA
12
.TA
qulit malΔ‘uk
.TA
qulimal
.TE
.TS
π
.TA
13
.TA
qulit piΕasut
.TA
qulipin
.TE
.TS
π
.TA
14
.TA
akimiaΔ‘utaiαΈ·aq
.TA
akigut
.TE
.TS
π
.TA
15
.TA
akimiaq
.TA
aki
.TE
.TS
π
.TA
16
.TA
akimiaq atausiq
.TA
akiat
.TE
.TS
π
.TA
17
.TA
akimiaq malΔ‘uk
.TA
akimal
.TE
.TS
π
.TA
18
.TA
akimiaq piΕasut
.TA
akipin
.TE
.TS
π
.TA
19
.TA
iΓ±uiΓ±Γ±aΔ‘utaiαΈ·aq
.TA
inugut
.TE
.TS
ππ
.TA
20
.TA
iΓ±uiΓ±Γ±aq
.TA
inu
.TE
.TS
And so onβ¦
.TE
.TE
.P
β Kaktovik symbols and their decimal counterparts
.B Note on pronunciation and mental model
.EX
.P
.UR https://wikipedia.org/wiki/I%C3%B1upiaq_numerals
Thereβs this Wikipedia entry on IΓ±upiaq numerals
.UE
.
.UR https://youtube.com/watch?v=hgxstR95k7U
And this video teaching the basics of pronunciation
.UE
.
Concerned with pronunciation and mental modes of numbers in IΓ±upiaq speech.
The mapping to Kaktovik numerals is not one-to-one, despite two systems originating from the same people.
π (19) is essentially βone-before-20,β instead of β15-plus-4.β
Similar to Roman numerals with 4 as IV.
Or Russian time colloquial βhalf an hour before threeβ markers.
.EE
.P
Now, there also is a βsub-baseβ of 5: the digits are split into two parts: upper and lower.
The upper part denotes multiples of 5.
Iβll call them βticks,β for the lack of a better terminology.
(This, technically, makes the system quinary-vigesimal, whatever that might mean.)
The lower part denotes units of 1, βsticksβ.
.B Using a different base with the same notation
.EX
.P
I briefly considered using Kaktovik numerals with base-12 and sub-base of 4.
With that setup, numbers would be:
.TS
Symbol
.TA
Duodecimal
.TA
Decoded
.TE
.TS
π
.TA
0
.TA
0
.TE
.TS
π
.TA
1
.TA
1
.TE
.TS
π
.TA
2
.TA
2
.TE
.TS
π
.TA
3
.TA
3
.TE
.TS
π
.TA
4
.TA
4Γ1 + 0
.TE
.TS
π
.TA
5
.TA
4Γ1 + 1
.TE
.TS
π
.TA
6
.TA
4Γ1 + 2
.TE
.TS
π
.TA
7
.TA
4Γ1 + 3
.TE
.TS
π
.TA
8
.TA
4Γ2 + 0
.TE
.TS
π
.TA
9
.TA
4Γ2 + 1
.TE
.TS
π
.TA
X
.TA
4Γ2 + 2
.TE
.TS
π
.TA
Y
.TA
4Γ2 + 3
.TE
.TS
ππ
.TA
10
.TA
12Γ1 + 4Γ0 + 0
.TE
.P
β Duodecimal (base-12) Kaktovik notation
.P
But base-12 is
.UR https://merveilles.town/@aartaka/116443925309299187
really inconvenient to convert things to / from
.UE
.
Despite being quite good otherwise!
So I abandoned the idea.
.EE
.P
The system is simple: one strokeβone unit.
So π is one stroke / stick in units and two strokes / ticks in fives.
So 1 + 2Γ5 = 11
And the highest digitβπβis four units and three fives.
4 + 3Γ5 = 19.
.P
See how visual the system is?
This makes it a unique-ish numeric notation that maps well onto arithmetics.
With addition, subtraction, and division being almost fully graphical computations.
(Multiplication is still table-based or otherwise complicated.)
Especially nice for calculations on paper.
Less soβfor computers, where you can just whip up a Lisp REPL and do
.P
.in +4n
.EX
(expt 2 10000)
19950631168807583848837421626835850838234968318861924548520089498529438830221946631919961684036194597899331129423209124271556491349413781117593785932096323957855730046793794526765246551266059895520550086918193311542508608460618104685509074866089624888090489894838009253941633257850621568309473902556912388065225096643874441046759871626985453222868538161694315775629640762836880760732228535091641476183956381458969463899410840960536267821064621427333394036525565649530603142680234969400335934316651459297773279665775606172582031407994198179607378245683762280037302885487251900834464581454650557929601414833921615734588139257095379769119277800826957735674444123062018757836325502728323789270710373802866393031428133241401624195671690574061419654342324638801248856147305207431992259611796250130992860241708340807605932320161268492288496255841312844061536738951487114256315111089745514203313820202931640957596464756010405845841566072044962867016515061920631004186422275908670900574606417856951911456055068251250406007519842261898059237118054444788072906395242548339221982707404473162376760846613033778706039803413197133493654622700563169937455508241780972810983291314403571877524768509857276937926433221599399876886660808368837838027643282775172273657572744784112294389733810861607423253291974813120197604178281965697475898164531258434135959862784130128185406283476649088690521047580882615823961985770122407044330583075869039319604603404973156583208672105913300903752823415539745394397715257455290510212310947321610753474825740775273986348298498340756937955646638621874569499279016572103701364433135817214311791398222983845847334440270964182851005072927748364550578634501100852987812389473928699540834346158807043959118985815145779177143619698728131459483783202081474982171858011389071228250905826817436220577475921417653715687725614904582904992461028630081535583308130101987675856234343538955409175623400844887526162643568648833519463720377293240094456246923254350400678027273837755376406726898636241037491410966718557050759098100246789880178271925953381282421954028302759408448955014676668389697996886241636313376393903373455801407636741877711055384225739499110186468219696581651485130494222369947714763069155468217682876200362777257723781365331611196811280792669481887201298643660768551639860534602297871557517947385246369446923087894265948217008051120322365496288169035739121368338393591756418733850510970271613915439590991598154654417336311656936031122249937969999226781732358023111862644575299135758175008199839236284615249881088960232244362173771618086357015468484058622329792853875623486556440536962622018963571028812361567512543338303270029097668650568557157505516727518899194129711337690149916181315171544007728650573189557450920330185304847113818315407324053319038462084036421763703911550639789000742853672196280903477974533320468368795868580237952218629120080742819551317948157624448298518461509704888027274721574688131594750409732115080498190455803416826949787141316063210686391511681774304792596709376
.EE
.in
.P
β Totally normal computation, right?
.P
For this next part Iβll pick up a piece of paper and do computations there.
Do so too!
.SS Conversion from / to decimal
.P
Conversion from decimal to Kaktovik means doing some divisions.
By powers of 20.
Itβs simple enough, because powers of 20 are both distinctive and well-suited to decimals.
Here are the first five powers:
.TS
20^0
.TA
20^1
.TA
20^2
.TA
20^3
.TA
20^4
.TA
20^5
.TE
.TS
1
.TA
20
.TA
400
.TA
8000
.TA
160000
.TA
3200000
.TE
.P
β
.P
Take a number, check which biggest power fits, subtract it as many times as possible, and jot it down as the biggest digit.
Repeat for lower digits, until the number runs out.
.P
Converting to decimal multiplication by these same powers.
This works automatically for me, because decimal is wired into my brain (and your too, likely.)
.SS Addition
.P
Okay, simple things typical to most positional numeric systems first:
Adding two big things βoverflowsβ (donβt beat me up on terminology, Iβm not a math kid!) into the next position or tick.
So adding π (2) and π (4) results in π (6, one stick plus one tick.)
Same as 2 + 9 = 10 + 1, but in 5-based system and graphically.
So far so good.
.P
Then, it can also get proper positional.
We can not only overflow into ticks, we can overflow into positions.
So adding π (2) and π (19) results in ππ (21, one in twenties and one.)
So itβs much like in decimal: add more than the current position can sustain, and you get +1 in the next position and some remainder.
.P
So yeah, overflow in ticks is removal of one π, removal of one tick, and addition of π stick to the next position.
Overflow in sticks is removal of one π, removal of one stick, and one more π tick to the result.
.P
The full algorithm is
.P
* Take the two rightmost digits of the numbers to be added.
.P
* If the numbers can be drawn together into a valid digit, go to 4
.P
* If not, we have an overflow:
.P
.P
* If the overflow is in sticks / ones, remove five sticks and add one tick.
.P
* If the overflow is (now) in ticks, remove four ticks and add one stick to next position.
.P
* Write the two resulting digits merged in the current digit place.
.P
* Move to next pair of digits, adding the overflow stick when necessary, and repeat 2-4.
.P
* If ran out of digits in one number, insert digits from another (longer) one, adding the overflow stick and handling respective overflow when necessary.
.P
The procedure is the same as with decimal addition numerically, but itβs also augmented graphically.
Hereβs transcript of my thinking for πππ + πππ:
.P
.in +4n
.EX
So okay, three vigesimal places.
Starting with the rightmost, like in school math.
π + π is an obvious overflow.
So we remove one Z-like glyph;
remove a tick from another one (π;)
add the sticks unchanged (because there are no sticks in π, phew;)
and remember one stick for the future.
So π and an overflow stick.
Now, to π + π.
First, add the previous step stick: π + π now.
Then just glue these together: π.
The last pair (π and π) is easy too: just glue them into π.
Got πππ!
.EE
.in
.P
β My train of thought for πππ + πππ = πππ
.EE
.P
β An attempt to show the addition computation graphically
.P
Purely graphical math.
Just so you know: I added 437 and 455.
I mightβve gone with a more complicated setup, bigger numbers, and more overflows.
Sure.
But thatβs what this page generated for me, and Iβm okay with the amount of challenge.
Refresh / re-generate and try some addition yourself!
.SS Subtraction
.P
Subtraction is removing sticks and ticks.
Subtraction is nasty, because there are negative numbers if we subtract a bigger thing from smaller thing.
.P
Letβs try ππ - ππ.
Obviously, the right one is biggerβthere are more sticks.
So the result in negative.
But okay, we can add a minus and invert the relation: -(ππ - ππ)
Now itβs possible to just remove sticks:
.P
.in +4n
.EX
Starting with π - π, getting π (zero.)
Then π - π, removing the duplicate part and getting π .
The result is simply π πβ¦ but with a minus added from inverted relation!
.EE
.in
.P
β Calculation of -(ππ - ππ) = -π π
.P
Okay, more complicated example to demonstrate the heuristics: ππ - ππ.
.P
.in +4n
.EX
This is problematic: we have a subtrahend larger than minuend.
Elementary school technique: remove one stick from the upper position (π now)
and subtract from π + π + π (initial number + 20.)
So itβs removal of π from π, resulting in π.
Plus π and π.
So π in the ones position.
Now to π - π.
Uh oh, another underflow.
This time, borrowing from the ticks: π turns into π, but gets π and π.
Can subtract π from it now: (π + π + π) - π = π + ((π + π) - π) = π.
Yeah, I just removed sticks and ticks in places that had them.
So ππ.
.EE
.in
.P
β ππ - ππ thought train = ππ
.P
So underflow is when we remove either one tickβif underflow is merely in sticks.
Or one stick from next positionβif itβs in ticks.
And then use that as full value in the current context plus one
(adding π + π for positions, and π + π for sticks.)
The full algorithm then is:
.P
* If the subtrahend (right number) is larger than the minuend (left number,) remember that the result should be negated and swap these.
.P
* Take rightmost digits from both numbers.
.P
* If the right digit fully fits into the left one, go to 4.
.P
* If thereβs not enough of either sticks or ticks:
.P
.P
* If there are not enough sticks in left digit, remove one tick from it and add five sticks.
.P
* If there are not enough ticks, take one stick from the next position and add four ticks.
.P
* Remove the right digit from the resulting left digit complex and write down the result in current digit place.
.P
* Move to next two digits, repeat 2-4
.P
* If there are remaining digits in the left number, but no digits in the right oneβjust transfer these digits into the result.
.P
* Apply the negation to the result if numbers were swapped at the start of the algorithm.
.P
I mean, itβs all the same as elementary school, but without non-obvious Arabic numerals and decimal places.
.B Bonus session, re-iterating and re-using addition
.EX
.P
.in +4n
.EX
First, inverting the relation: -(ππ - ππ).
Now π - π.
π is less, so take one stick from the next position (π -> π.)
Now we have (π + π + π) - π.
So remove two ticks from π and one π.
Still, we have π and π, which is a lot.
Using the overflow rule from
.UR #addition
addition section
.UE
(-W, -l, +tick,) getting π.
Whatβs left is π - π.
So π.
ππ, or just π.
Oh, wait, there was a minus sign.
-π!
.EE
.in
.P
β ππ - ππ = -π
.EE
.SS Division
.P
I havenβt found more complex division examples on either Wikipedia,
.UR https://youtube.com/watch?v=EyS6FfczH0Q
Artifexianβs video
.UE
,
nor even Bartleyβs original writing.
No one seems to have done division in public.
.P
But, actually, itβs quite similar to subtraction, where we βborrowβ sticks from the upper position to the lower one.
And from ticks to sticks.
.P
Operations are still quite graphical, and often as easy as removing ticks and sticks from numbers:
.P
Notice the rotated ππ in fives places.
So we essentially get ππ * 5, thus a tick instead of stick in result.
.P
But, for more complex examples, I found that adding more sticks and ticks from remainders up to absurdly long zigzags keeps the system graphical.
Without the need to use numerics at all.
.P
.in +4n
.EX
ππ / π.
First, π is obviously contained in π.
Just remove it once, to the result of π in twenties position and remainder π.
Then, dividing π by π.
π is larger than π.
Are we stuck?
No!
We take the remainder π from the previous step and convert it ππ -> π + π.
So we have π + π.
Which divides once, to a π remainder.
Which divides too!
We take a tick and turn it into π + π.
So we have π + π.
Remove π from there (second removal now) and get remainder of π.
With the result ππ and remainder of π.
.EE
.in
.P
β ππ / π = ππ
.P
While this is not as pretty as the Wikipedia example, it is still pretty easy.
Just downgrade some fives and twenties to their alternatives.
Elementary school again, just visuals only!
The only time I had to count things was to count sticks converted from ticks.
And to count ticks converted from twenties.
Which is easy enough to do visually once Iβm used to this.
The algorithm:
.P
* Take as many leftmost digits from the dividend as there are digits in the divisor.
.P
* If the divisor fits into these digits, go to 3
.P
* If it doesnβt fit or there are too many remaining sticks,
.P
* Downgrade one remainder from the previous position (if any) into four ticks.
.P
* Downgrade one tick into five sticks.
.P
* Repeat however many times necessary to get as many divisors fitting into this as possible.
.P
* This is ultimately a riddle where you need to balance out sticks and ticks for maximum output. Enjoy!
.P
* Remove the divisor from the resulting digits N times, and write N into the resulting digits place.
.P
* If there were not entries for divisor even with downgraded remainders, write π.
.P
* Remember the remainder from the division in the current position.
.P
* Shift one position right in the dividend and repeat 2-5.
.P
* If there are less digits in the current dividend even with downgraded remainders, stop and write them in as a remainder.
.SS Multiplication
.P
So thereβs this βlong multiplicationβ thing, multiplying numbers digit-by-digit.
Wikipedia article on Kaktovik numerals lists these multiplication tables for long multiplication, one per tick / stick pairing.
.P
Which means that, for every pair of digits in multiplicands, there are maximum 6 sub-multiplications.
For 3-digit long numbers, this easily goes up to 3 (digits) * 3 (other digits) * 6 = 36 sub-multiplications, disregarding (a lot of) resulting additions.
Which is too much, and it feels like it can be improved.
.P
There are many
.UR https://wikipedia.org/wiki/Multiplication_algorithm
multiplication algorithms
.UE
,
with their tradeoffs and complexities.
Hereβs the ones I checked:
.TP
.B Long multiplication
Too long, suboptimal
.TP
.B Grid and lattice multiplication
These require having per-digit multiplication results, which, in case of base-20 Kaktovik amounts to 400 variations.
Too much to make the method easy.
.TP
.B
.UR https://wiki.xxiivv.com/site/paper_product.html
Intersection-based multiplication
.UE
Base-20 numbers require too many lines, and this method does not scale beyond four digits.
.TP
.B Russian peasant multiplication
Actually, why not? Halving is (almost) as simple in Kaktovik as removing every second stick / tick, while doubling is⦠slightly more complicated than that.
.TP
.B Egyptian multiplication
Even betterβit only requires powers of two and doubling!
.TP
.B Other methods
Too much scary math, didnβt read
.P
So, if we take Egyptian multiplication,
we get \fBlog2(min(N,M))\fP multiplications for N Γ M multiplication.
If we get long multiplication, we get \fBlog20(N)Γlog20(M)Γ6\fP.
These two might be comparable for small numbers, but grow apart on big ones.
.P
So (probably) the most optimal Kaktovik multiplication algorithm is Egyptian multiplication.
.UR https://wikipedia.org/wiki/Ancient_Egyptian_multiplication
Refer to Wikipedia for the description
.UE
.
But, before doing Egyptian multiplication⦠halving and doubling!
Halving
.P
Not useful for Egyptian multiplication, but vital to Russian peasant multiplication.
In case you want to use it instead of Egyptian π
And just because it seemed fun!
.P
This is highly heuristic, but easy enough to remember:
.P
* Start from the leftmost digit of the number.
.P
* For every two ticks or sticks, write one tick / stick into the result respectively.
.P
* If there are some ticks or sticks remaining
.P
* If there is only π (one tick) left, add π (two sticks) to the result and π (two ticks) to the result of next digit (sic) halving.
.P
* If thereβs π left, add π (three sticks) to the result.
.P
* If thereβs π left, add π (four sticks) to the result.
.P
* If thereβs π left, add π (two ticks) to the result of next digit halving and nothing to the current digit result.
.P
* Move to the next digit and halve it.
.P
Four special cases and otherwise fully visual computation.
Not too bad?
Doubling
.P
Itβs easiest to just double ticks, then double sticks, then replace five sticks with one tick and replace four ticks with added stick in next position.
Thatβs it.
Again, purely graphical.
.P
You can also learn a multiplication table from each of 19 digits to its doubled version.
Which is still less than the per-component tables (12 + 16 + 9 = 37,) but much less fun than crossing out sticks.
.TS
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TE
.TS
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ
.TE
.TE
.P
β Multiplication table for X Γ 2
Multiplication by 5
.P
Given that 5 is a sub-base, multiplication by 5 is as easy as inverting sticks with some heuristic:
.P
* Take the rightmost digit.
.P
* For every tick in the digit, add one stick to the next position and leave the ticks the same in current position.
.P
.P
* For every stick in the digit, add one tick in the same position.
.P
* Handle overflow by turning every 4 ticks into a stick in next position and every 5 sticks in next position into a tick.
.P
* Repeat for the next digit until done.
Egyptian multiplication
.P
Now that doubling is in place, we only need a table of powers of two.
.TS
1
.TA
2
.TA
4
.TA
8
.TA
16
.TA
32
.TA
64
.TA
128
.TA
256
.TA
512
.TA
1024
.TA
2048
.TA
4096
.TE
.TS
π
.TA
π
.TA
π
.TA
π
.TA
π
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ
.TA
ππ π
.TA
πππ
.TA
π ππ
.TA
πππ
.TE
.P
β Powers of two in Kaktovik numerals
.P
We take the smaller multiplicand and write out all of the powers of two that are less than that.
And, in each line, the second multiplicand multiplied by the respective power.
Given that powers increase by doubling, we only need the multiplicand and successive doubling.
Instead of actual multiplication by 2X.
.P
So we just take that and write out the table:
.TS
Power of two (under ππ)
.TA
Multiplier
.TE
.TS
\fSπ\fP
.TA
\fSπππ\fP
.TE
.TS
π
.TA
πππ
.TE
.TS
\fSπ\fP
.TA
\fSπππ\fP
.TE
.TS
π
.TA
πππ
.TE
.TS
\fSπ\fP
.TA
\fSπππ\fP
.TE
.TS
ππ
.TA
ππππ
.TE
.P
β Example Egyptian multiplication of ππ Γ πππ = ππππ
.P
With a total result of ππππ.
I have to admit, my first attempt to compute it was a failure.
\fBstupid (7)\fP
There was too much stuff for my stupid head.
But I re-checked the computation in DevTools and decided I can do that too.
Someday.
.SS Square root
.P
The original paper by Bartley mentioned that Kaktovik numerals make it easy for students to calculate square root.
I havenβt yet found the algorithm they used for that.
But Iβm hopeful!
.SH Where to Next?
.P
I hope this (not particularly) small page made you learn something about Kaktovik numerals.
Thanks for getting this far!
Lots of love π
.B Userscript not for the faint of heart
.EX
.P
You can enable this user script to convert all numbers on the page into Kaktovik numerals:
.P
.in +4n
.EX
// ==UserScript==
// @name Forced Kaktovik
// @description Turn all the numbers on the page into Kaktovik numerals
// @version 0.0.0
// @author Artyom Bologov
// @license WTFPL
// @include *://*/**
// @run-at document-end
// ==/UserScript==
(function () {
const dig2k = {
0: 'π',
1: 'π',
2: 'π',
3: 'π',
4: 'π',
5: 'π ',
6: 'π',
7: 'π',
8: 'π',
9: 'π',
10: 'π',
11: 'π',
12: 'π',
13: 'π',
14: 'π',
15: 'π',
16: 'π',
17: 'π',
18: 'π',
19: 'π',
}
function toK(num) {
if (typeof num === 'string')
num = parseInt(num)
let kak = ''
do {
const rem = num % 20
kak = dig2k[rem] + kak
num = (num - rem) / 20
} while (num !== 0)
return kak
}
for (const node of document.querySelectorAll(':not(pre,script,style,textarea,input,[contenteditable])')) {
for (const child of node.childNodes) {
if (child.nodeType === Element.TEXT_NODE)
child.textContent = child.textContent.replaceAll(/\b[0-9]{1,30}\b/g, toK)
}
}
}())
.EE
.in
.P
β Forced Kaktovik userscript
.EE
.SH COPYRIGHT
.UR https://creativecommons.org/licenses/by/4.0
CC-BY 4.0
.UE
2022-2026 by Artyom Bologov (aartaka,)
.UR https://codeberg.org/aartaka/pages/commit/a91befa
with one commit remixing Claude-generated code
.UE
.
Any and all opinions listed here are my own and not representative of my employers; future, past and present.