Skip to content

Instantly share code, notes, and snippets.

@TWal
Created June 12, 2014 21:45
Show Gist options
  • Save TWal/a76ea24f19a9bac93cb8 to your computer and use it in GitHub Desktop.
Save TWal/a76ea24f19a9bac93cb8 to your computer and use it in GitHub Desktop.
Quine and narcissist in brainfuck
>>+>>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+++>+>++>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>+++++>+>++++>+>++>+>+>+>+>+>>+>+>+>>+>+>+>+>+>+>+>>+>+>+>>+>>+>+>+>>+>+>+>>+>+>+>>+>+>+>+>+>+>+>>+>+>+>>+>+>+>+>+>+>+>+>+>+>+>>+>+>+>>+>+++++>+>+++++>+>+++++>+>+++++>+>>+>+>+>>+>+>+>+>+>+>+>+>+>>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+++>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>++>+>+++++>+>++++>+>>+>>+>>+>+>+>++>+>++>+>+++++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>+>+>>+>>+>+++>+>++>+>++>+>+++++>+>>+>>+>+++++>+>>+>>+>+++>+>>+>>+>++++>+>>+>>+>+++>+>>+>>+>++++>+>>+>>+>>+>+++>+>>+>>+>>+>++++>+>++>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+++>+>++>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>++>+>++>+>++>+>++>+>++>+>+++++>+>++++>+>++>+>+++++>+>>+>>+>+>+>>+>+>+>>+>>+>+>+>>+>+++++>+>>+>>+>+>+>+++>+>++>+>++>+>++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>>+>+++>+>>+>+++>+>>+>>+>++++>+>>+>>+>+++>+>>+>>+>++++>+>>+>>+>>+>+++>+>>+>>+>>+>++++>+>++>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+++>+>++>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>+++++>+>++++>+>++>+>+>+>>+>>+>+>+>+++>+>++>+>++>+>++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>++>+>++>+>+>+>>+>>+>>+>+++++>+>++++>+>++>+>++>+>++>+>+++>+>>+>>+>>+>+>+>++>+>++>+>++>+>+++++>+>++++>+>+>+>>+>>+>+>+>>+>>+>++++>+>>+>>+>+++++>+>++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>>+>>+>+++++>+>>+>>+>+++>+>+++++>+>>+>+++>+>>+>+++>+>>+>>+>++++>+>>+>>+>+++>+>>+>>+>++++>+>+>+>>+>>+>+++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>>+>+++++>+>++++>+>>+>+++>+>>+>>+>++++>+>>+>>+>+++>+>>+>>+>++++>+>++>+>+++>+>>+>>+>>+>+++>+>>+>>+>++++>+>++>+>+>+>>+>>+>>+>>+>+++>+>>+>>+>>+>++++>+>++>+>++>+>+>+>++>+>+++>+>++>+>++>+>++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>++>+>+++++>+>++++>+>>+>>+>>+>+++>+>>+>>+>++++>+>>+>>+>>+>+++>+>>+>>+>>+>++++>+>+>+>+++>+>++>+>++>+>++>+>++++>+>++>+>+++>+>+++>+++>+>++>+>++>+>++++>+>++>+>+>+>>+>>+>>+>+++>+>>+>>+>++++>+>++>+>+++++>+>++++>+>++>+>+++>+>++>+>++>+>++++>+>+>+>+++>+>++>+>++>+>++++>+>>+>>+>+++++>+>++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>>+>>+>++++>+>>+>>+>+>+>+++>+>>+>>+>++++>+>>+>>+>>+>+++>+>>+>>+>>+>++++>+>++>+>++>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>++>+>+++>+>++>+>++>+>++>+>++++>+>>+>>+>+++++++>+>+++>+>>+>+++>+>+++++>+>++++>+>+>+>>+>>+>+++++++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++>+>++++>+>++>+>+>+>>+>>+>>+>>+>+++>+>+++++>+>++>+>+++>+>++>+>+++++>+>>+>+++++>+>++++>+>++>+>+++>+>++>+>+++>+>++>+>++>+>++>+>++++>+>++>+>+++>+>+++++>+>++++>+>>+>>+>>+>>+>+++>+>>+>>+>>+>++++>+>++>+>++>+>+++>+>+++++>+>++++>+>++++>+>>+>>+>+>+>>+>>+>>+>++++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++>+>++++>+>+>+>+>+>+>+>+>+>+>+>+>+>+++>+>++>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>+++++>+>++++>+>++>+>++++++>>>++++++++++[<++++++>>++++>>++++++>>+++++++++>>+++++++++>>++++>>+++++>>++++<<<<<<<<<<<<<-]<++>+>+++>+>>+>+>+>+++>+>+++++>+>---->+>++++>+>>+++++++[>+++++++++<-]>>>+<<-<<<[<<]<<[<<]+>>[<<->>->>[>>]>>[>>]>>>[>>>]<+++++++[<+++++++++>>>++++++>>>+++++++++<<<<<-]<->>+>+>>+>->>+[<<<]<<[<<]<<[<<]>[>[>>]>>[>>]>>>[>>>]<+++++++[<++++++>-]<+>>+[<<<]<<[<<]<<[<<]<<+>>>-]<<<[>>>+<<<-]+>>+>>]>>-<<<<[<<]>>->>[->[>[>>]>>[>>]+>>-<<[<<]<<[<<]>-]>[>>]>>[>>]<[>>>[>>]<+>>>>[>>>]<<+<[<<<]<<[<<]<-]>>>[>>]>>>[>>>]+[<<<]<[<[<<]<+>>>[>>]<-]<[<<]+[<<]>>-<<<<[<<]>>]>>+[>>]>>>[>>>]<<++++++++++<[<<<]>>,[>[-]+>>,]<<[<<<]<+>>>>[-<[<->-]<[<[<<<]<[-]>>>>[>>>]<<[-]]>>+>>>]<<<[<<<]++++++[<++++++++>-]<.
#cmacro(add;
int i;
int nb = atoi(argv[0]);
if(nb < 0) {
for(i = 0; i < -nb; ++i) {
push("-");
}
} else {
for(i = 0; i < nb; ++i) {
push("+");
}
}
)
#macro(middleToData;;
=zero; <<[<<] @Data@flag;
)
#macro(dataToMiddle;;
=flag; >>[>>] @Middle@zero;
)
#macro(middleToAscii;;
=firstFlag; [>>] @Ascii@flag;
)
#macro(asciiToMiddle;;
=flag; <<[<<] @Middle@zero;
)
#macro(asciiToMiddle2;;
=flag; >>[>>] @Middle2@zero;
)
#macro(middle2ToAscii;;
=lastFlag; [<<] @Ascii@flag;
)
#macro(middle2ToMyself;;
=firstFlag;[>>>] @Myself@flag;
)
#macro(myselfToMiddle2;;
=flag; <<<[<<<] @Middle2@zero;
)
#variables(Data; flag; data; nflag)
#variables(Middle; lastFlag; lastData; zero; firstAscii; firstFlag)
#variables(Ascii; ascii; flag)
#variables(Middle2; lastFlag; temp1; zero; firstMe; firstInput; firstFlag)
#variables(Myself; me; input; flag)
>>+>>+>+>+>++>+>+++>+>++++>+>+++++>+>++++++>+>+++++++
@Middle@lastData;
#_ SETUP
#_ > 62
#_ + 43
#_ < 60
#_ [ 91
#_ ] 93
#_ - 45
#_ . 46
#_ , 44
=firstFlag;
_add(10)[<_add(6)>>_add(4)>>_add(6)>>_add(9)>>_add(9)>>_add(4)>>_add(5)>>_add(4)<<<<<<<<<<<<<-]
<++>+>+++>+>>+>+>+>+++>+>+++++>+>---->+>++++>+ @Middle2@lastFlag;
=zero; _add(7) [ =firstMe; _add(9) =zero; -] =firstMe; - =firstFlag; +
=lastFlag; [<<]
@Middle@zero;
=zero;<<[<<]
+ >> @Data@flag;
#_ PRINT DATA CODE
[
<<->>-
_dataToMiddle()
=firstFlag; [>>] @Middle2@zero;
_middle2ToMyself()
=input; _add(7) [
< _add(9)
>>> _add(6)
>>> _add(9)
<<<<< -
]
<- >>+ >+ >>+ >- >>+ [<<<] @Middle2@zero;
=lastFlag; [<<] @Middle@zero;
_middleToData()
=data; [
_dataToMiddle()
=firstFlag; [>>] @Middle2@zero;
_middle2ToMyself()
=input; _add(7) [ =me; _add(6) =input; - ] =me; + =flag; + [<<<] @Middle2@zero;
=lastFlag; [<<] @Middle@zero;
_middleToData()
=flag;<<+>>
=data; -
]
=flag; << [
>> =data; +
=flag; << -
] + >>
=flag;
+ >>
]
@Middle@zero;
#_ PRINT THE REST
=firstFlag; -
=lastFlag; [<<] >>->> @Data@flag;
[
-
=data; [
_dataToMiddle()
_middleToAscii()
=flag; + >> -
_asciiToMiddle()
_middleToData()
=data; -
]
_dataToMiddle()
_middleToAscii()
=ascii; [
_asciiToMiddle2()
=temp1; +
_middle2ToMyself()
=me; +
_myselfToMiddle2()
_middle2ToAscii()
=ascii; -
]
_asciiToMiddle2()
_middle2ToMyself()
=flag; + [<<<] @Middle2@zero;
=temp1; [
_middle2ToAscii()
=ascii; +
_asciiToMiddle2()
=temp1; -
]
_middle2ToAscii()
=flag; +[<<]>>-
@Middle@firstFlag;
_middleToData()
=flag; >>
]
@Middle@zero;
=firstFlag; + [>>] @Middle2@zero;
_middle2ToMyself()
=me; _add(10)
_myselfToMiddle2()
=firstInput; @Myself@input; , [
=flag; [-] +
>>> =input; ,
]
_myselfToMiddle2()
=temp1; +
=firstFlag; @Myself@flag; [
-
=input; [ =me; - =input; -]
=me; [
_myselfToMiddle2()
=temp1; [-]
_middle2ToMyself()
=me; [-]
]
=flag; + >>>
]
_myselfToMiddle2()
=zero; _add(6) [ =temp1; _add(8) =zero; - ]
=temp1; .
>>+>>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+++>+>++>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>>+>>+>+>+>+>+>+>+>+>+>+>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>++>+>+++++>+>++++>+>++>+>+>+>+>+>++++++>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>>+>+>+>++>+>+++++>+>+++++>+>+++++>+>+++++>+>++>+>+>+>++>+>+>+>+>+>+>+>+>+>+>+>++>+>+>+>++>+>+>+>+>+>+>+>++>+>+>+>++>+>+>+>++>+>+>+>++>+>++>+>+>+>++>+>+>+>+>+>+>+>++>+>+>+>++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>+>+>>+>>+>+++>+>++>+>++>+>+++++>+>>+>>+>+++++>+>>+>>+>+++>+>>+>>+>++++>+>>+>++++++>+>>+>>+>++++++>+>++>+>++>+>++++++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>>+>+++>+>>+>+++>+>>+>>+>++++>+>>+>>+>>+>++++++>+>++>+>++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>++>+>++>+>+>+>>+>>+>>+>+++++>+>++++>+>++>+>++>+>++>+>+++>+>>+>>+>>+>+>+>++>+>++>+>++>+>+++++>+>++++>+>+>+>>+>>+>+>+>>+>>+>++++>+>>+>>+>+++++>+>++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>>+>>+>+++++>+>>+>>+>+++>+>+++++>+>>+>+++>+>>+>+++>+>>+>>+>++++>+>>+>>+>+++>+>>+>>+>++++>+>+>+>>+>>+>+++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>>+>+++++>+>++++>+>>+>+++>+>>+>>+>++++>+>>+>>+>+++>+>>+>>+>++++>+>++>+>++++++>+>>+>+>+>+++>+>++>+>++>+>++++>+>>+>>+>+++++>+>++>+>++>+>++>+>++>+>+++>+>++>+>++>+>++++>+>>+>>+>++++>>>++++++++++[<++++++>>++++>>++++++>>+++++++++>>+++++++++>>++++>>+++++<<<<<<<<<<<-]<++.>>>>>>>>>>>>>+<----<+<+++++<+<+++<+<+<+<<+<+++<+<<<<[<<]+>>[<<->>->>[>>]>.>>.<<.<<<[<<]>[>[>>]>>>.<<<<<[<<]<<+>>>-]<<<[>>>+<<<-]+>>+>>]>>-<<<<[<<]>>->>[->[>[>>]>>[>>]+>>-<<[<<]<<[<<]>-]>[>>]>>[>>]<.>+[<<]>>-<<<<[<<]>>]
#cmacro(add;
int i;
int nb = atoi(argv[0]);
if(nb < 0) {
for(i = 0; i < -nb; ++i) {
push("-");
}
} else {
for(i = 0; i < nb; ++i) {
push("+");
}
}
)
#macro(middleToData;;
=zero; <<[<<] @Data@flag;
)
#macro(dataToMiddle;;
=flag; >>[>>] @Middle@zero;
)
#macro(middleToAscii;;
=firstFlag; [>>] @Ascii@flag;
)
#macro(asciiToMiddle;;
=flag; <<[<<] @Middle@zero;
)
#variables(Data; flag; data; nflag)
#variables(Ascii; ascii; flag)
#variables(Middle; lastFlag; lastData; zero; firstAscii; firstFlag)
>>+>>+>+>+>++>+>+++>+>++++>+>+++++>+>++++++
@Middle@lastData;
#_ SETUP
#_ > 62
#_ + 43
#_ < 60
#_ [ 91
#_ ] 93
#_ - 45
#_ . 46
=firstFlag;
_add(10)[<_add(6)>>_add(4)>>_add(6)>>_add(9)>>_add(9)>>_add(4)>>_add(5)<<<<<<<<<<<-]
<++.>+>+++>+>>+>+>+>+++>+>+++++>+>---->+<<<<<<<<<<<<<<
@Middle@zero;
=zero;<<[<<]
+ >> @Data@flag;
#_ PRINT DATA CODE
[
<<->>-
_dataToMiddle()
=firstAscii; .>>.<<.
_middleToData()
=data; [
_dataToMiddle()
=firstAscii; >>.<<
_middleToData()
=flag;<<+>>
=data; -
]
=flag; << [
>> =data; +
=flag; << -
] + >>
=flag;
+ >>
]
@Middle@zero;
##
#_ PRINT THE REST
=firstFlag; -
=lastFlag; [<<] >>->> @Data@flag;
[
-
=data; [
_dataToMiddle()
_middleToAscii()
=flag; + >> -
_asciiToMiddle()
_middleToData()
=data; -
]
_dataToMiddle()
_middleToAscii()
=ascii; .
=flag; +[<<]>>-
@Middle@firstFlag;
_middleToData()
=flag; >>
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment