#include #include #include int main() { FILE *fp = fopen("source.c", "w"); fprintf(fp, "#include \n"); fprintf(fp, "int main(void) {"); fprintf(fp, "unsigned char d[%d];", 32768); fprintf(fp, "for (int i = 0; i < %d; i++) d[i] = 0;", 32768); fprintf(fp, "unsigned char *p = d;"); // ref. http://yukicoder.me/submissions/161198 const char *code = ">+++++++++[<+++++++++++++>-]<+.-------.------.-----."; int len = strlen(code); for (int i = 0; i < len; i++) { switch (code[i]) { case '>': fprintf(fp, "p++;"); break; case '<': fprintf(fp, "p--;"); break; case '+': fprintf(fp, "(*p)++;"); break; case '-': fprintf(fp, "(*p)--;"); break; case '.': fprintf(fp, "putchar(*p);"); break; case ',': fprintf(fp, "*p = getchar();"); break; case '[': fprintf(fp, "while (*p) {"); break; case ']': fprintf(fp, "}"); break; } } fprintf(fp, "}"); fclose(fp); system("gcc source.c > /dev/null\n./a.out"); return 0; }