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.
96.
96. is a 96 derivative that adds commands б, ь, and ф
96 Commands
Modify current element:
+ increment current element - decrement current element . current element is set to 0 0...9 set current element to 10*itself+digit @ set current element to ACC
Note that if current element is 0, any number will set it to this number (e.g. 42 will set it to (0*10+4)*10+2=42)
Memory pointer control:
a...z go to the first element of corresponding array , go to the next element of current array ' go to the previous element of current array # go to element n of current array, where n is the content of current element _ go to the first zero element of current array (it is set to 0)
(Imagine arrays as columns, with first element on the top: ' goes up and , goes down)
Control structures:
( ) if ACC=0 then *inside*
( ; ) if ACC=0 then *left side* else *right side*
[ ] infinite loop (there's ways to exit: see next section)
{ } undefined
Unary operators:
^ return ACC+1 (i.e. increment ACC) | return ACC-1 (decrement) Space return 0 : return the value of current element
Binary operators: they return the result of ACC *op* current element
& addition = subtraction (absolute value) * multiplication / euclidean division (quotient) % euclidean division (remainder) \ inverted quotient (current element / ACC) ` inverted remainder
Test operators: they return 0 (i.e. true) iff ACC *op* current element
= equals (this is the same as subtraction, because |a-b|=0 iff a=b) < is lower than (strict, returns 1 if false) > is greater than (idem)
Input/Output:
? input text: if only digits were input, return the numeral they represent, else, fill current array with ASCII representation of input characters. " output ASCII characters signified by numbers in current array $ output ACC as a numeral, followed by a space
With ? and ", End of String is encoded by a zero element (NULL character. If user enters n characters, they will fill elements [0..n-1], element n will be set to 0, and elements after n are not affected.
? deals with any input starting with 0 as non-numerical (this is to tell apart 0123 from 123).
Advanced commands:
~ switches the values of current element and ACC ! execute the command corresponding to the character signified by ACC A-Z define a function, or call it
To define functions, put this at the beginning of the program:
; A*commands* F*commands* ... ;
Commands inside the definitions will be skipped in the first time. Then, any use of a capital letter will call the corresponding function, executing the commands up to the new line, and then resume the execution after the function call. Functions may call each other, or even themselves.
96. adds
б halt ь quine ф self-interpreter