Fingerfuck

From Esolang
Jump to navigation Jump to search
Fingerfuck
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'