Whyfuck

From Esolang
Jump to navigation Jump to search

Whyfuck is confusing derivate of well-known esoteric programming language Brainfuck. It shares brainfuck's possibilities and adds some new ones, but makes programming annoying and slow, though you could create a script to produce code. (And that is cheating!)

Working Mechanism

Whyfuck uses 10 commands whose 8 is shared with brainfuck with 2 extra commands, giving small addition to command arsenal. Syntax otherways is same.

Brainfuck Whyfuck Meaning
> 0 move selector into next cell in tape
< 1 move selector back in tape
+ 2 increase value of current cell by 1
- 3 decrease value of current cell by 1
[ 4 jump to next corresponding ] if cell value is zero
] 5 jump back to corresponding [ if cell value is zero
. 6 output current cell value as corresponding character
, 7 input user-given character as corresponding integer value into current cell
8 skip next command
9 reverse read direction

But, as this would be way too easy, each character is crypted into new one, with this python-syntax function:

str((number+1)*(number_index_in_code+1)*71)[-2]

Meaning, that each number is different, depending on it's position in code. You must type the code the way that output does the things you ordered it to.

So a raw code which simply looks like this without crypting:

 0422205

Will look like this after crypting, which is then executed using those number commands:

 7135628

And we can easily make script which creates 'true' output values:

   | index:
 0 | 7 4 1 8 5 2 9 6 3 1 8 5 2 9 6 3 0 7 4 2 9 6 3 0 7 
 1 | 4 8 2 6 1 5 9 3 7 2 6 0 4 8 3 7 1 5 9 4 8 2 6 0 5 
 2 | 1 2 3 5 6 7 9 0 1 3 4 5 6 8 9 0 2 3 4 6 7 8 9 1 2 
 3 | 8 6 5 3 2 0 8 7 5 4 2 0 9 7 6 4 2 1 9 8 6 4 3 1 0 
 4 | 5 1 6 2 7 3 8 4 9 5 0 6 1 7 2 8 3 9 4 0 5 1 6 2 7 
 5 | 2 5 7 0 3 5 8 0 3 6 8 1 3 6 9 1 4 6 9 2 4 7 9 2 5 
 6 | 9 9 9 8 8 8 7 7 7 7 6 6 6 5 5 5 4 4 4 4 3 3 3 2 2 
 7 | 6 3 0 7 4 0 7 4 1 8 4 1 8 5 2 8 5 2 9 6 2 9 6 3 0 
 8 | 3 7 1 5 9 3 7 1 5 9 2 6 0 4 8 2 6 0 4 8 1 5 9 3 7

Examples

Hello World

865320875485976421926431086532087582593857598233308653207454217768159864310865320871340972061728994051627097114

Ascii MAchine

Loop which counts numbers to infinity and prints the matching symbol

35376