Sadako
Sadako was inspired by origami folding and uses a paper square with side lengths of 1 as storage. Each line starts with |
and is numbered top to bottom, where the first line is line 0. Commands on the same line are separated by :
.
Commands
A -> B | Fold point A towards the user to point B A => B | Fold point A away from the user to point B ~ | Undo last fold = V A B L | If the distance between points A and B equals V, jump to line L > V A B L | Same as = but greater than V < V A B L | Same as = but less than V ? | Take 1 bit of input. If it equals 0, skip the next command ! A B | Multiply the distance between points A and B by 1000, truncate it, and print it as an ASCII character . A B | Print the distance between points A and B [ | Comment (goes to end of line)
Paper folding
Initially, the square is labelled with the points:
A B .-----. | | | | | | | | | | '-----' C D
Whenever a new fold is made, all unlabelled intersections of 2 or more lines or unlabelled corners get labelled with the next unused letter. They are labelled from the top, going right, then down. Any time a point is created, it can't be removed without getting rid of the paper. Once point Z is created, point names continue with AA, AB, AC... BA, etc.
Example:
| A -> C : ~
This program creates a paper and folds it in half vertically, then undoes the fold. This generates 2 new points, E and F.
A B .-----. | | | | E| |F | | | | '-----' C D
Example program: Truth-machine
| ? : = 0 A A 2 | . A B : = 0 A A 1 | . A A