Unangemeldeter Besuch und der Schock eines verbotenen Geheimnisses
Ich bin einfach so zu meiner Tochter gefahren und habe entdeckt, was ich nie wissen wollte.
Manchmal denkt man, Glück liege in Gesundheit und Stabilität der Kinder. Ich fühlte mich gesegnet: ein liebevoller Ehemann, eine erwachsene Tochter, süße Enkelkinder. Reich waren wir nicht, aber unser Zuhause war voller Harmonie. Was wollte man mehr?
Leni heiratete jung, mit 21, einen Mann Mitte 30. Wir sagten nichts er hatte einen sicheren Job, eine Wohnung in Berlin, war ruhig und verlässlich. Kein sorgloser Student, sondern ein Fels in der Brandung. Er bezahlte alles das Hochzeitskleid, die Flitterwochen in Bayern, teure Geschenke. Die Familie flüsterte: *Leni hat ihren Prinzen gefunden.*
Die ersten Jahre waren perfekt. Die Geburt von Jonas, dann von Marie, der Umzug in ein Haus in Potsdam, Wochenenden mit der Familie Doch langsam zThe **Befunge Programming Language** is a two-dimensional esoteric programming language invented in 1993 by Chris Pressey with the goal of being as hard to compile as possible.
## Features
Code is layed out on a two-dimensional grid of instructions (The _playfield_). The instruction pointer starts at the top-left of the grid, moving right. The direction of the instruction pointer can be changed with the instructions `>v<^?`. The instruction pointer wraps around the playfield.
Befunge-93 has a stack, (Last In, First Out) and can only store numbers. The stack has a maximum size of 32, if more than 32 elements are pushed to the stack, they are lost.
## Instructions
| Command | Description |
|---------|-------------|
| `0-9` | Push the corresponding number onto the stack. |
| `+` | Pop `a` and `b`, push `a + b` |
| `-` | Pop `a` and `b`, push `b - a` |
| `*` | Pop `a` and `b`, push `a * b` |
| `/` | Pop `a` and `b`, push `b / a` (Integer division) |
| `%` | Pop `a` and `b`, push `b % a` |
| `!` | Pop `a`, push `1` if `a == 0`, else `0` |
| `` ` `` | Pop `a` and `b`, push `1` if `b > a`, else `0` |
| `>` | Set the instruction pointer’s direction to right |
| `<` | Set the instruction pointer's direction to left |
| `^` | Set the instruction pointer's direction to up |
| `v` | Set the instruction pointer's direction to down |
| `?` | Set the instruction pointer's direction randomly |
| `_` | Pop `a`, if `a` is `0`, set the instruction pointer's direction to right, else left |
| `\|` | Pop `a`, if `a` is `0`, set the instruction pointer's direction to down, else up |
| `"` | Toggle stringmode. When stringmode is active, push the ASCII value of each character to the stack. |
| `:` | Duplicate the top value of the stack. If the stack is empty, push a `0`. |
| `\` | Swap the top two values of the stack. If there is only one value, push a `0` after swapping. |
| `$` | Pop and discard the top value of the stack. |
| `.` | Pop `a` and output it as a number. |
| `,` | Pop `a` and output the corresponding ASCII character. |
| `#` | _Trampoline_: Skip the next cell |
| `p` | Pop `y`, `x` and `v`. Put the ASCII character `v` at (`x`, `y`) in the playfield. |
| `g` | Pop `y` and `x`. Push the ASCII value of the character at (`x`, `y`) in the playfield. |
| `&` | Ask the user for a number and push it to the stack. |
| `~` | Ask the user for a character and push its ASCII value to the stack. |
| `@` | End the program. |
## Examples
### Hello World
```
> v
v ,,,,,”Hello”<
>48*, v
v,,,,,,”World!”<
>25*,@
“`
### Cat Program
“`
~:1+!#@_,
“`
### Factorial
“`
>&:1-!#v_1
^ _$*@
“`
## See Also
– [Befunge on esolangs.org](https://esolangs.org/wiki/Befunge)
– [Befunge-93 Specification](https://catseye.tc/view/Befunge-93/doc/Befunge-93.markdown)