We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

NINETY SIX

From Esolang
Jump to navigation Jump to search

NINETY SIX is an esolang named for its character table of 96 characters, plus a ® sign. I formerly called it "Sakupen" but then I was like "Nah, I want to use that later." It has two variants, NINETYSIX and NINETYSIX.XQ, the former using characters and the latter using colors, but they both have the same commands and logic.

Commands
Instruction Meaning
CJAV Control flow (2D): left, right, up, down
<> Move the pointer on the tape.
^v Increment and decrement the current memory cell.
X Push the current number onto a storage stack.
O Pop the top of the storage stack and set the current tape cell to that value.
D Clear the storage stack.
+-*/% Pop the top two stack values as a then b, calculate b (+-*/%) a, and then set the current tape cell to that value.
= Equal-to operator (the current tape cell is compared to a number)
ie If and else statements.
Z Ends the program.
? Random direction.
n Not (inside an if-statement, so: "If NOT this, do this.")
I Ask for input. (capital i, not lowercase L.)
Q Print the source code and quit.

Code exists on an 800x800 grid, and you can also use INFINITY MODE if that's not enough. Also, if < or > is inside an if-statement, then they are less-than and greater-than comparers. Placing a . sign (period) after some command in the control flow means "Do it the first time you hit this, and then don't for every subsequent time hitting this particular point." Putting it before a command does the opposite: fails the first time, and never again.

Character space

  0123456789ABCDEF              0123456789
                              
0  abcdefghijklmno            0  abcdefghi
1 pqrstuvwxyzABCDE     or     1 jklmnopqrs
2 FGHIJKLMNOPQRSTU            2 tuvwxyzABC
3 VWXYZ0123456789!            3 DEFGHIJKLM
4 @#$%^&*()-=_+[]\            4 NOPQRSTUVW
5 {}|;':",./<>?`~©            5 XYZ0123456
6 ®                           6 789!@#$%^&
                              7 *()-=_+[]\
                              8 {}|;':",./
                              9 <>?`~©®

The blank spot at the start represents the space.

Example programs

Hello world program (optimized)

     ^^^^^^^^XO0V
       V0OX^^^^^C
       J^^^^^^^^^^^^XO0V
       V0OX^^^^^^^^^^^^C
       J^^^^^^^^^^^^^^^XO00XO0V    Size: 31x10
   V0OX^^^^^^^^^^^^^^^^^^^^^^^C
   J^^^^^^^^^^^^^^^X0OV
V0OX^^^^^^^^^^^^^^^^^^C
J^^^^^^^^^^^^X0OV
           Z^^^^C

The unoptimized version:

JV8i^i8VC  J V51i^15VCJ         V81i^i18VC
 X         0        X 0         X
 O         O        O O         O
 0         X        0 X         0
 JV5i^i5VCJA21i^12VC0JA51i^i15ACJV21i^i12VCZ          Size: 50x9
  X       0         X          0 X         0
  O       O         O          O O         O
  0       X         0          X 0         X
  J       A21i^i12VCJA32i^i23  ACJ         A4i^i4AC

Quine

Q       Size: 1x1

AND-gate

01IX01IXiX01nVeV
A            C             Size: 16x3
   ZOXeZOX^y11iC

where I'm using X as shorthand for the stack.
Do-nothing

Z

Three different infinite loops:

><
v
^
>v
^<

I2, I3, and so on can be used for multiple inputs.
Math operator

IXI2XII2;DXOZ

or shorthand:

II2;DXOZ            the ; sign is where the operation goes.

Calculator

IXI2XI3XiI3+-*/%nDVeiI3+yVeiI3-yVeiI3*yVeiI3/yVeiI3%yV
     A            C      I      I      I      I      I
                         I      I      I      I      I
                         2      2      2      2      2
                         +      -      *      /      %
                         D      D      D      D      D
                         X      X      X      X      X
                         O      O      O      O      O
                         Z      Z      Z      Z      Z

Computational class

It's almost certainly Turing-complete. It has conditional looping (if (condition): loop) and math and all that good stuff. Even with 800x800 bounds, you can just use INFINITY mode and that limit no longer exists!