FakeC
Jump to navigation
Jump to search
FakeC is an esolang created by User:None1, it is a brainfuck equivalent. It is made to optimize brainfuck.
Commands
FakeC is brainfuck, but every command is replaced with a line of C code.
brainfuck | FakeC |
---|---|
(begin) | #include<stdio.h> char tape[1000000]; int p; int main(){ |
+ | ++tape[p]; |
- | --tape[p]; |
, | tape[p]=getchar(); |
. | putchar(tape[p]); |
> | ++p; |
< | --p; |
[ | while(tape[p]) |
] | } |
(end) | return 0; } |
Examples
Cat Program
#include<stdio.h> char tape[1000000]; int p; int main(){ tape[p]=getchar(); while(tape[p]){ putchar(tape[p]); tape[p]=getchar(); } return 0; }
Hello World
#include<stdio.h> char tape[1000000]; int p; int main(){ ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; while(tape[p]){ ++p; ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; while(tape[p]){ ++p; ++tape[p]; ++tape[p]; ++p; ++tape[p]; ++tape[p]; ++tape[p]; ++p; ++tape[p]; ++tape[p]; ++tape[p]; ++p; ++tape[p]; --p; --p; --p; --p; --tape[p]; } ++p; ++tape[p]; ++p; ++tape[p]; ++p; --tape[p]; ++p; ++p; ++tape[p]; while(tape[p]){ --p; } --p; --tape[p]; } ++p; ++p; putchar(tape[p]); ++p; --tape[p]; --tape[p]; --tape[p]; putchar(tape[p]); ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; ++tape[p]; putchar(tape[p]); putchar(tape[p]); ++tape[p]; ++tape[p]; ++tape[p]; putchar(tape[p]); ++p; ++p; putchar(tape[p]); --p; --tape[p]; putchar(tape[p]); --p; putchar(tape[p]); ++tape[p]; ++tape[p]; ++tape[p]; putchar(tape[p]); --tape[p]; --tape[p]; --tape[p]; --tape[p]; --tape[p]; --tape[p]; putchar(tape[p]); --tape[p]; --tape[p]; --tape[p]; --tape[p]; --tape[p]; --tape[p]; --tape[p]; --tape[p]; putchar(tape[p]); ++p; ++p; ++tape[p]; putchar(tape[p]); ++p; ++tape[p]; ++tape[p]; putchar(tape[p]); return 0; }
Implementations
FakeC is unimplemented, but is easy to implement. However, since any FakeC program can also work on C, You can feed a FakeC program to a C compiler, and that will result in an executable equivalent to the original brainfuck program which runs faster than the original brainfuck program. (Note: If you add the -O2
parameter in GCC, it will optimize the code so that a bunch increments and decrements are executed once).
See also
- VerboseFuck, similar but much more verbose!