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
```