ENHADINUMS (TM)
p-nand-q presents a revolutionary technique in computer science: ENHADINUMS (TM) aka Enhanced Digital Numbers. You can check them out in action here. But, before you start, I recommend you read this page first.
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[|
If you feel confident you can deal with all of this, go to a live evaluation CGI for ENHADINUMS.
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 = '|' | '+' | '#' | '.' | ':'.