CodeFuck

CodeFuck is a variant of BrainFuck.
It avoids repetitions and adds new operators
== Hello World ==
=== CodeFuck ===
+10[>+7>+10>+3>+<4-]>+2.>+.+7.2+3.>+2.<2+15.>.+3.-6.-8.>+.>.
=== BrainFuck ===
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
== Operators ==
Opertator 	Description
> 	Inc Cell
< 	Dec Cell
+ 	Inc Octet
- 	Dec Octet
. 	Output ASCII
; 	Output Integer
, 	Input ASCII
: 	Input Integer
f 	create function
F 	run function
[ 	While != 0
/ 	While == 0
( 	If == 0
{ 	If != 0
! 	If > 0
? 	If < 0
with ( { ! ?ex : |?	Else If ...
& 	Else
] \ ) } # 	Close condition block
_ 	Load VAR
$ 	VAR value
%your comment% 	Comment
== Conditions examples ==
=== Example 1 ===
==== CodeFuck ====
(.|!.|?.)
==== C ====
if (*cell==0) {
 putchar(*cell);
} else if (*cell>0) {
 putchar(*cell);
} else if (*cell<0) {
 putchar(*cell);
}
=== Example 2 ===
==== CodeFuck ====
{100.|?50.&.}
==== C ====
if (*cell!=100) {
 putchar(*cell);
} else if (*cell<50) {
 putchar(*cell);
} else {
 putchar(*cell);
}
=== Example 3 ===
==== CodeFuck ====
[100{80.|!30.|?30.&.}+]
==== C ====
while (*cell!=100) {
 if (*cell!=80) {
 putchar(*cell);
 } else if (*cell>30) {
 putchar(*cell);
 } else if (*cell<30) {
 putchar(*cell);
 } else {
 putchar(*cell);
 }
 ++*cell;
}
== Functions examples ==
The creation of a function always takes place before any other operations
==== CodeFuck ====
f1
 +65.
f
.
F1
or
f1+65.f.F1
==== C ====
long f1(long cell) {
 [...]
 *cell+=65;
 putchar(*cell);
 return cell*;
}
int main(int argc, char **argv)
{
 [...]
 putchar(*cell);
 *cell=f1(*cell);
 [...]
}
== Example hello.cf ==
==== Code ====
+10[
 >+7
 >+10
 >+3
 >+
 <4-
]
>+2.
>+.
+7.2
+3.
>+2.
<2+15.
>.
+3.
-6.
-8.
>+.
>.
"Salut le monde
"
>5
+48;" == "."
"
[-]
+65;" == "."
"
[-]
+97;" == "."
"
[-];" "
/+5\;" "
{-5};" "
(+);" "-;"
*cell ";" == ";"
"
[15+]
(15"*cell ";" == ";"
")
/15-\
{15"*cell ";" != 15"_}"
*cell ";" == "($;)[-]_"
"
==== Output ====
Hello World!
Salut le monde!
48 == 0
65 == A
97 == a
05010
*cell 0 == 0
*cell 15 == 15
*cell 14 not 15
14 == 14
== Example Math.cf ==
==== Code ====
>5+43
>+45
<6
"Add
 ":>"+"< :[<+>-]"= "<; >[-]<[-]
"
Sub
 ":>"-"< :[<->-]"= "<; >[-]<[-]
"
Mul
 ":_"x" >:[>+$<-]"= ">; <[-]>[-]
==== Output ====
Add
 10
+ 10
= 20
Sub
 78
- 45
= 33
Mul
 3
x 6
= 18
== Advanced Example ==
==== Code ====
"CodeFuck Math
Options :
 0 Addition
 1 Soustraction
 2 Multiplication
 3 Division
 : ":"
"
(
 % CHAR + %
 >5+43<5
 "Addition
 " :>5.<4" ":[<+>-]"= "<;" 
"
|(1
 % CHAR - %
 >6+45<6
 -
 "Soustraction
 " :>6.<5" ":[<->-]"= "<;"
"
|(2
 -2
 "Multiplication
 " :_"x ">:[>+$<-]"= ">;"
"
|(3 
 -3
 "Division
 " :>"÷ ":>
 <2[
 >[->+>+<2]
 >[-<2-
 [>]>3
 [
 <[
 >3-<3[-]
 ]>2
 ]<2
 ]>3+
 <2[
 -<2+>2
 ]<3
 ]
 >[-]>4[-<5+>5]
 <4+6<"= ";"
"
)
==== Output ====
CodeFuck Math
Options
 0 Addition
 1 Soustraction
 2 Multiplication
 3 Division
n° 1
Soustraction
 5675
- 55
= 5620
==== C Generate ====
#include <stdio.h>
#include <stdlib.h>
void memsetcf(char *array, int z, long unsigned int s );
int main(int argc, char **argv);
void memsetcf(char *array, int z, long unsigned int s ) {
 long unsigned int p;
 for (p=z; p<=s; p++){
 array[p]=z;
 }
}
int main(int argc, char **argv)
{
 long *cell = calloc(30000, 1);
 long *cells = cell;
 char num[8]; char c; int i=0; int var=0;
 if (!cell) {
 fprintf(stderr, "Error allocating memory.\n");
 return 1;
 }
/*--------------------------------------------*/
/*------------------CodeFuck------------------*/
/*--------------------------------------------*/
 putchar(67);
 putchar(111);
 putchar(100);
 putchar(101);
 putchar(70);
 putchar(117);
 putchar(99);
 putchar(107);
 putchar(32);
 putchar(77);
 putchar(97);
 putchar(116);
 putchar(104);
 putchar(10);
 putchar(10);
 putchar(79);
 putchar(112);
 putchar(116);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(115);
 putchar(32);
 putchar(58);
 putchar(10);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(48);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(65);
 putchar(100);
 putchar(100);
 putchar(105);
 putchar(116);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(10);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(49);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(83);
 putchar(111);
 putchar(117);
 putchar(115);
 putchar(116);
 putchar(114);
 putchar(97);
 putchar(99);
 putchar(116);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(10);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(50);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(77);
 putchar(117);
 putchar(108);
 putchar(116);
 putchar(105);
 putchar(112);
 putchar(108);
 putchar(105);
 putchar(99);
 putchar(97);
 putchar(116);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(10);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(51);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(68);
 putchar(105);
 putchar(118);
 putchar(105);
 putchar(115);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(10);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(58);
 putchar(32);
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 putchar(10);
 if (*cell==0) {
/* CHAR + */
 cell+=5;
 *cell+=43;
 cell-=5;
 putchar(65);
 putchar(100);
 putchar(100);
 putchar(105);
 putchar(116);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(10);
 putchar(32);
 putchar(32);
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 cell+=5;
 putchar(*cell);
 cell-=4;
 putchar(32);
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 while (*cell!=0) {
 --cell;
 ++*cell;
 ++cell;
 --*cell;
 }
 putchar(61);
 putchar(32);
 --cell;
 printf("%li", *cell);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(32);
 putchar(10);
 } else if (*cell==1) {
/* CHAR - */
 cell+=6;
 *cell+=45;
 cell-=6;
 --*cell;
 putchar(83);
 putchar(111);
 putchar(117);
 putchar(115);
 putchar(116);
 putchar(114);
 putchar(97);
 putchar(99);
 putchar(116);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(10);
 putchar(32);
 putchar(32);
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 cell+=6;
 putchar(*cell);
 cell-=5;
 putchar(32);
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 while (*cell!=0) {
 --cell;
 --*cell;
 ++cell;
 --*cell;
 }
 putchar(61);
 putchar(32);
 --cell;
 printf("%li", *cell);
 putchar(10);
 } else if (*cell==2) {
 *cell-=2;
 putchar(77);
 putchar(117);
 putchar(108);
 putchar(116);
 putchar(105);
 putchar(112);
 putchar(108);
 putchar(105);
 putchar(99);
 putchar(97);
 putchar(116);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(10);
 putchar(32);
 putchar(32);
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 var=*cell;
 putchar(120);
 putchar(32);
 ++cell;
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 while (*cell!=0) {
 ++cell;
 *cell+=var;
 --cell;
 --*cell;
 }
 putchar(61);
 putchar(32);
 ++cell;
 printf("%li", *cell);
 putchar(10);
 } else if (*cell==3) {
 *cell-=3;
 putchar(68);
 putchar(105);
 putchar(118);
 putchar(105);
 putchar(115);
 putchar(105);
 putchar(111);
 putchar(110);
 putchar(10);
 putchar(32);
 putchar(32);
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 ++cell;
 putchar(195);
 putchar(183);
 putchar(32);
 *cell = getchar();
 while (*cell!=0) {
 num[i]=*cell; i++;
 *cell-=10;
 if (*cell!=0) {
 *cell+=10;
 *cell = getchar();
 }
 }
 *cell = atoi(num);
 memsetcf(num, 0, sizeof (num)); i=0;
 ++cell;
 cell-=2;
 while (*cell!=0) {
 ++cell;
 while (*cell!=0) {
 --*cell;
 ++cell;
 ++*cell;
 ++cell;
 ++*cell;
 cell-=2;
 }
 ++cell;
 while (*cell!=0) {
 --*cell;
 cell-=2;
 --*cell;
 while (*cell!=0) {
 ++cell;
 }
 cell+=3;
 while (*cell!=0) {
 --cell;
 while (*cell!=0) {
 cell+=3;
 --*cell;
 cell-=3;
 while (*cell!=0) {
 --*cell;
 }
 }
 cell+=2;
 }
 cell-=2;
 }
 cell+=3;
 ++*cell;
 cell-=2;
 while (*cell!=0) {
 --*cell;
 cell-=2;
 ++*cell;
 cell+=2;
 }
 cell-=3;
 }
 ++cell;
 while (*cell!=0) {
 --*cell;
 }
 cell+=4;
 while (*cell!=0) {
 --*cell;
 cell-=5;
 ++*cell;
 cell+=5;
 }
 cell-=4;
 *cell+=6;
 --cell;
 putchar(61);
 putchar(32);
 printf("%li", *cell);
 putchar(10);
 }
/*--------------------------------------------*/
/*----------------End CodeFuck----------------*/
/*--------------------------------------------*/
 free(cells);
 return 0;
}
== Source ==
CodeFuck source repository
Category:Brainfuck derivatives