Skip to content

Instantly share code, notes, and snippets.

@rexim
Created January 17, 2026 23:42
Show Gist options
  • Select an option

  • Save rexim/d961342a6b4ca56dc01e5a0dccace0b3 to your computer and use it in GitHub Desktop.

Select an option

Save rexim/d961342a6b4ca56dc01e5a0dccace0b3 to your computer and use it in GitHub Desktop.
// cc -o o ./o.c && ./o > o.py
#include <stdio.h>
#include <string.h>
int main()
{
char buf[256];
const char *self = "# python ./o.py > o.c\nself = \"?\"\nfor x in self.split(chr(124))[1]:\n if ord(x) == 63:\n for y in self:\n if y == '\\n': print(\"\\\\n\", end='')\n elif y == '\"': print(\"\\\\\\\"\", end='')\n elif y == '\\\\': print(\"\\\\\\\\\", end='')\n else: print(f\"{y}\", end='')\n else:\n print(x, end='')\n|// cc -o o ./o.c && ./o > o.py\n#include <stdio.h>\n#include <string.h>\n\nint main()\n{\n char buf[256];\n const char *self = \"?\";\n int n = strlen(self);\n for (int i = 0; self[i] != 124; ++i) {\n if (self[i] == 63) {\n for (int j = 0; j < n; ++j) {\n switch (self[j]) {\n case '\\n': printf(\"\\\\n\"); break;\n case '\"': printf(\"\\\\\\\"\"); break;\n case '\\\\': printf(\"\\\\\\\\\"); break;\n default: printf(\"%c\", self[j]);\n }\n }\n } else {\n printf(\"%c\", self[i]);\n }\n }\n return 0;\n}\n";
int n = strlen(self);
for (int i = 0; self[i] != 124; ++i) {
if (self[i] == 63) {
for (int j = 0; j < n; ++j) {
switch (self[j]) {
case '\n': printf("\\n"); break;
case '"': printf("\\\""); break;
case '\\': printf("\\\\"); break;
default: printf("%c", self[j]);
}
}
} else {
printf("%c", self[i]);
}
}
return 0;
}
// cc -o q ./q.c && ./q < q.q > q1.c
#include <stdio.h>
#include <string.h>
int main()
{
char buf[256];
const char *self = "// cc -o q ./q.c && ./q < q.q > q1.c\n#include <stdio.h>\n#include <string.h>\n\nint main()\n{\n char buf[256];\n const char *self = \"?\";\n for (;;) {\n char *s = fgets(buf, sizeof(buf), stdin);\n if (s == NULL) break;\n while (*s) {\n if (*s == 'q') {\n int n = strlen(self);\n for (int i = 0; i < n; ++i) {\n if (self[i] == 63) {\n for (int j = 0; j < n; ++j) {\n switch (self[j]) {\n case '\\n': printf(\"\\\\n\"); break;\n case '\"': printf(\"\\\\\\\"\"); break;\n case '\\\\': printf(\"\\\\\\\\\"); break;\n default: printf(\"%c\", self[j]);\n }\n }\n } else {\n printf(\"%c\", self[i]);\n }\n }\n }\n s += 1;\n }\n }\n fclose(fopen(\"some-random-file.txt\", \"wb\"));\n return 0;\n}\n";
for (;;) {
char *s = fgets(buf, sizeof(buf), stdin);
if (s == NULL) break;
while (*s) {
if (*s == 'q') {
int n = strlen(self);
for (int i = 0; i < n; ++i) {
if (self[i] == 63) {
for (int j = 0; j < n; ++j) {
switch (self[j]) {
case '\n': printf("\\n"); break;
case '"': printf("\\\""); break;
case '\\': printf("\\\\"); break;
default: printf("%c", self[j]);
}
}
} else {
printf("%c", self[i]);
}
}
}
s += 1;
}
}
fclose(fopen("some-random-file.txt", "wb"));
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment