Fingerfuck
Jump to navigation
Jump to search
| Designed by | EvilRodentOfEvil |
|---|---|
| Appeared in | 2025 |
| Computational class | Unknown |
| Reference implementation | Unimplemented |
| Influenced by | QO, Brainfuck |
Fingerfuck is a poor quality esoteric programming language inspired by QO and Brainfuck, made by EvilRodentOfEvil
Language overview
Fingerfuck has two stacks—handA for integers and handB for ASCII characters—and a two-cell fingers tape (cell 0 integer, cell 1 ASCII) that a pointer can reference and manipulate. Values are popped off the front of the stack, but are pushed onto the back
Commands
| Command | Description |
|---|---|
| / | pop handA, push handA |
| \ | pop handB, push handB |
| ( | pop handA, push handB(int -> ascii) |
| ) | pop handB, push handA(ascii -> int) |
| : | Push pointer onto handA |
| ; | Push pointer onto handB |
| $ | pop handA, set pointer |
| & | pop handB, set pointer |
| ~ | swap pointer |
| . | print pointer |
| , | set pointer to input |
| + | increment pointer |
| - | decrement pointer |
| " | swaps between code and label mode |
| ^"LABEL" | starts a goto with the provided label |
| v"LABEL" | goes to the goto with the provided label |
| { | sets the pointer to one if the top two values of handA are equal and zero if not, pops top two values |
| } | sets the pointer to one if the top two values of handB are equal and zero if not, pops top two values |
| [ | jump past the matching "]" if the cell under the pointer is 0 |
| ] | jump back to the matching "[" if the cell under the pointer is nonzero |
| ' | swaps between code and comment mode |
| a-z A-Z !? | pushes to pointer |
Examples
Hello, World!
This program prints out the words Hello World!:
~ 'switches pointer to middle' H;e;l;l;o;!-;W;o;r;l;d;!; 'pushes Hello World! to handB' &.&.&.&.&.&.&.&.&.&.&.&. 'prints Hello World!'
3 Character Password
This program has a password of 'Yay':
^"start" 'starts goto called "start"' ~ 'pointer on ascii' Y; 'pushes "Y" to handB' ,; 'pushes input to handB' a; 'pushes "a" to handB' ,; 'pushes input to handB' y; 'pushes "y" to handB' ,; 'pushes input to handB' ~ 'pointer on int' } 'checks if input 1 is "A"' -[v"start"] 'goes to "start" if false' } 'checks if input 2 is "s"' -[v"start"] 'goes to "start" if false' } 'checks if input 3 is "s"' -[v"start"] 'goes to "start" if false'