We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

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'