Amnesia
- This is still a work in progress. It may be changed in the future.
Amnesia is an esoteric programming language created by User:Padarom in 2014. It is inspired by Malbolge and tries to be extremely hard to understand and to program with, though to be possible.
This page is under construction and details are being added while descriptions about the language are written.
Overview
The basic principle of Amnesia is, that every character in its code only represent its ASCII-code (which changes depending on the position within the program and the length of the programs code). Thus numbers don't represent their values, but instead they represent the result of a weird calculation ("Number transform"). Every character in ASCII between the decimal value of 32 and 126 is usable.
An Amnesia-program contains three stacks: A, B and C
Instructions
Character(s) | Decimal | Description |
---|---|---|
cho_ | 99 104 111 | Select the provided stack (the one that replaces the underscore _) |
= | 61 | Set the value of the selected stack to the value behind |
+ | 43 | Adds the number in stack B with to number in stack A |
- | 45 | Subtracts the number in stack B from the number in stack A |
/ | 47 | Divides the number in stack A by the number in stack B |
* | 42 | Multiplies the numbers in stack A and stack B |
% | 37 | Performs a modulo-operation of stack A with stack B (A mod B) |
Nm | 78 109 | If the value of the selected stack (A, B or C) is not equal to zero |
: | 58 | The same as an opening bracket (Amnesia doesn't differentiate between the normal ( and { ) |
; | 59 | The same as a closing bracket (Amnesia doesn't differentiate between the normal ) and } ) |
disp | 100 105 115 112 | Display the value of the currently selected stack |
Examples
The following program is written using the standard characters, thus not taking the transform into account
choA=BchoB=B*
The same program, written using the Transform function
pucwovcjtny!p
Interpreter
An interpreter for Amnesia has yet to be written. I will be really happy if someone creates one before me.