Dozencode (pronounced DUZ-encode) is a duodecimal number system, with a couple of nifty features that make it nice for transmitting encoded integers.
By way of example:
Dozencode | Pronunciation | Base 10 |
---|---|---|
Z | zero | 0 |
A | one | 1 |
B | two | 2 |
C | three | 3 |
D | four | 4 |
E | five | 5 |
F | six | 6 |
G | seven | 7 |
H | eight | 8 |
I | nine | 9 |
J | ten | 10 |
K | eleven | 11 |
Y | negative one | -1 |
X | negative two | -2 |
W | negative three | -3 |
V | negative four | -4 |
U | negative five | -5 |
T | negative six | -6 |
S | negative seven | -7 |
R | negative eight | -8 |
Q | negative nine | -9 |
P | negative ten | -10 |
O | negative eleven | -11 |
Az | a dozen | 12 |
Aa | a baker’s dozen | 13 |
Ab | fourteen | 14 |
Ac | fifteen | 14 |
Bz | twenty-four | 24 |
Ba | twenty-five | 25 |
Azz | a gross | 144 |
Yz | negative twelve | -12 |
Ya | negative thirteen | -13 |
That is, Z
is zero, A
through K
are one through eleven, Y
through
O
is negative one through negative 11, z
and a
through k
are used
for digits beyond the ones.
This way, you can encode a series of positive and/or negative integers without need for delimiters. For example, the first ten powers of negative two in base 10:
1, -2, 4, -8, 16, -32, 64, -128, 256, -512
Dozencoded:
AXDRAdXhEdPhAidWfh
Much better.
The reference implementation is Python dozencode. Let us know if you write your own!
from dozencode.dozencode import dozencode, dozdecode
print(dozencode([1, 10, 100, 1000])) # AJHdFkd
print(dozdecode("AXDRAdXhEdPhAidWfh")) # [1, -2, 4, -8, 16, -32, 64, -128, 256, -512]
Dozencode is released to the public domain on May 23, 2024 by Colin M. Saunders.