Historical Note

This page was migrated from the original p-nand-q.com site which was last updated in 2015. The content has been preserved exactly as it was, with only formatting updated for modern browsers. Over the coming days and weeks, the content will be reviewed and may be updated for accuracy and relevance. If you find any issues, please contact me.

ENHADINUMS (TM)

p-nand-q presents a revolutionary technique in computer science: ENHADINUMS (TM) aka Enhanced Digital Numbers. They are used frequently throughout this website, to publicize my mathematical skills, increase the visibility of my genius and land me that multimillion dollar job that I need to get my first million.

What are ENHADINUMS ?

To understand ENHADINUMS, you need to know first of all the digits:

|
One
+
Two
#
Four
.
Minus One
:
Minus Two

You can add digits by just writing them next to each other, so ## is 8, and |||||||| is 8, too. There are an infinite number of ways of representing the number 3 as a ENHADINUM, making ENHADINUMS very useful for people that like to spend some time writing the number 3 in infinite ways. Here are just some:

#.
|||
+|
++.
+.#+
.......#.##.####.##.#.........................

You can use a 5-based placement system by prefixing the number with '. For example, '## is 24 (because 4*5+4). The whole syntax was inspired by babylonian clay even though I have no idea what that word means. You can even use negative digits in the placement system - something the babylonians never figured out - so for example, '#. is 19 (because 4*5-1).

You can escape from the placement system by writing a single comma, so '#,'#, is a very fine way of writing 8.  

You can use shifted numbers by using the following syntax.

SHIFT   = '(' NUMERIC '=' NUMERIC ')'.

For example, (#=#) is 64, and (|=.) is 0. Now you can write the number 20 like this:

(+~:,|~:,~:,~|,~+,=#~#,.#~+,~#,~:,~:,~:,~+,~+,~.,|~+,~.,~#,+~.,+~+,
~:,~+,#.)~'+|,'+|,~'+,~'+(+|=|.),'|(+|=|.),~'++,|(+=.|)(+=|#..)~'(+
|=|.)(+|=|.),~'||(+|=|.),~.,'|||,(.~.,:#~.,~.,#+:~:,~.,~+,+|=|)~'|(
|=.)(|=.),'(+|=|.),(|:#=.|)~'|(|=.)#,'|(|=.)|,'++,~+,#~'+,~:,~'+(|=
.),(:+~:,+~:,~+,~:,~#,|+=.|)'|(|=.),~'|,

It gets better. You can redefine the identifiers on the fly using the following syntax:

'$' <index> <char>

where <index> is a zerobased hexadecimal index into this array:

['|','+','#','.',':',',','(',')','~','=',"'"]

and <char> is a character you want to replace it with. This makes it possible to write 20 like this:

(.$9c+|+~.,+$3a+#~a,$4*~+,~*,~#,+#|$6f*c*+$5b|)+#$2d~|b~'|+f+|c|a)b'f+
|c|a)+bfdd~db~abcd*~dba~*b$6:~db~ab+$2ee~*b~eb~ab)a~'eb~':+|c|a)|b:|~*
b~*bca|):e|~|b$5[~|[ce~e[+$1o|~e[|~o[|~a[$2n~n[o|~n[$ajo~a[$9!~a[$2.||
):o.|$1da*!a|):$9'.*~*[~d[~d[~*[~*[*a'a|)~+[~j|:|'a)d[~*[j|:|'a)|[~d[d
~j|:d|'|a)[~j|d:|'a)[jd:d|'|a)[+$9o|j|dd[~j..[~jd:|oa)d[$a/:a.$7{~*[|d
..~a[|.~*[$0f~a[d~a[d~a[$2=~a[~a[~*[=f~*[a$3;d~;[=dd$9c~*[d$2#~*[~;[~;
[f$1o~#[#~;[c;f{:;;f~;[o#;c;f{~/o:fc;{[/f#[~/:ofcf;{f[./:ofcf;{#[~|[*~
|[~d[|

As an overview, this is the syntax implemented:

NUMBER = NUMERIC { NUMERIC }.
NUMERIC = SHIFT | DIGIT | NUMPLC | NUMUNSD.
NUMPLC = "'" (DIGIT|SHIFT) {(DIGIT|SHIFT)} .
NUMUNSD = ','
SHIFT = '(' NUMERIC '=' NUMERIC ')'.
DIGIT = '|' | '+' | '#' | '.' | ':'.