Skip to content

Instantly share code, notes, and snippets.

@ShiroUsagi-san
Created September 5, 2017 18:17
Show Gist options
  • Save ShiroUsagi-san/61d8d52098683785926ad00524a98bde to your computer and use it in GitHub Desktop.
Save ShiroUsagi-san/61d8d52098683785926ad00524a98bde to your computer and use it in GitHub Desktop.
quine moche
/* See comments below */
const unsigned char data[] = {
/* 00000000: */ 0x20, 0x20, 0x20, 0x20,
/* 00000004: */ 0x2f, 0x2a, 0x20, 0x54,
/* 00000008: */ 0x68, 0x69, 0x73, 0x20,
/* 0000000c: */ 0x69, 0x73, 0x20, 0x61,
/* 00000010: */ 0x20, 0x73, 0x65, 0x6c,
/* 00000014: */ 0x66, 0x72, 0x65, 0x70,
/* 00000018: */ 0x20, 0x28, 0x71, 0x75,
/* 0000001c: */ 0x69, 0x6e, 0x65, 0x29,
/* 00000020: */ 0x20, 0x70, 0x72, 0x6f,
/* 00000024: */ 0x67, 0x72, 0x61, 0x6d,
/* 00000028: */ 0x2e, 0x20, 0x49, 0x74,
/* 0000002c: */ 0x20, 0x75, 0x73, 0x65,
/* 00000030: */ 0x73, 0x20, 0x74, 0x68,
/* 00000034: */ 0x65, 0x20, 0x61, 0x62,
/* 00000038: */ 0x6f, 0x76, 0x65, 0x20,
/* 0000003c: */ 0x64, 0x61, 0x74, 0x61,
/* 00000040: */ 0x20, 0x28, 0x77, 0x68,
/* 00000044: */ 0x69, 0x63, 0x68, 0x0a,
/* 00000048: */ 0x20, 0x20, 0x20, 0x20,
/* 0000004c: */ 0x20, 0x2a, 0x20, 0x69,
/* 00000050: */ 0x73, 0x20, 0x6e, 0x6f,
/* 00000054: */ 0x20, 0x6f, 0x74, 0x68,
/* 00000058: */ 0x65, 0x72, 0x20, 0x74,
/* 0000005c: */ 0x68, 0x61, 0x6e, 0x20,
/* 00000060: */ 0x74, 0x68, 0x65, 0x20,
/* 00000064: */ 0x41, 0x53, 0x43, 0x49,
/* 00000068: */ 0x49, 0x20, 0x72, 0x65,
/* 0000006c: */ 0x70, 0x72, 0x65, 0x73,
/* 00000070: */ 0x65, 0x6e, 0x74, 0x61,
/* 00000074: */ 0x74, 0x69, 0x6f, 0x6e,
/* 00000078: */ 0x20, 0x6f, 0x66, 0x20,
/* 0000007c: */ 0x65, 0x76, 0x65, 0x72,
/* 00000080: */ 0x79, 0x74, 0x68, 0x69,
/* 00000084: */ 0x6e, 0x67, 0x20, 0x73,
/* 00000088: */ 0x74, 0x61, 0x72, 0x74,
/* 0000008c: */ 0x69, 0x6e, 0x67, 0x0a,
/* 00000090: */ 0x20, 0x20, 0x20, 0x20,
/* 00000094: */ 0x20, 0x2a, 0x20, 0x66,
/* 00000098: */ 0x72, 0x6f, 0x6d, 0x20,
/* 0000009c: */ 0x74, 0x68, 0x69, 0x73,
/* 000000a0: */ 0x20, 0x63, 0x6f, 0x6d,
/* 000000a4: */ 0x6d, 0x65, 0x6e, 0x74,
/* 000000a8: */ 0x29, 0x20, 0x74, 0x6f,
/* 000000ac: */ 0x20, 0x70, 0x72, 0x69,
/* 000000b0: */ 0x6e, 0x74, 0x20, 0x69,
/* 000000b4: */ 0x74, 0x73, 0x20, 0x6f,
/* 000000b8: */ 0x77, 0x6e, 0x20, 0x6c,
/* 000000bc: */ 0x69, 0x73, 0x74, 0x69,
/* 000000c0: */ 0x6e, 0x67, 0x2e, 0x20,
/* 000000c4: */ 0x2a, 0x2f, 0x0a, 0x20,
/* 000000c8: */ 0x20, 0x20, 0x20, 0x0a,
/* 000000cc: */ 0x20, 0x20, 0x20, 0x20,
/* 000000d0: */ 0x23, 0x69, 0x6e, 0x63,
/* 000000d4: */ 0x6c, 0x75, 0x64, 0x65,
/* 000000d8: */ 0x20, 0x3c, 0x73, 0x74,
/* 000000dc: */ 0x64, 0x69, 0x6f, 0x2e,
/* 000000e0: */ 0x68, 0x3e, 0x0a, 0x20,
/* 000000e4: */ 0x20, 0x20, 0x20, 0x0a,
/* 000000e8: */ 0x20, 0x20, 0x20, 0x20,
/* 000000ec: */ 0x69, 0x6e, 0x74, 0x20,
/* 000000f0: */ 0x6d, 0x61, 0x69, 0x6e,
/* 000000f4: */ 0x20, 0x28, 0x76, 0x6f,
/* 000000f8: */ 0x69, 0x64, 0x29, 0x0a,
/* 000000fc: */ 0x20, 0x20, 0x20, 0x20,
/* 00000100: */ 0x20, 0x20, 0x20, 0x20,
/* 00000104: */ 0x20, 0x2f, 0x2a, 0x20,
/* 00000108: */ 0x54, 0x68, 0x65, 0x20,
/* 0000010c: */ 0x6d, 0x61, 0x69, 0x6e,
/* 00000110: */ 0x20, 0x70, 0x72, 0x6f,
/* 00000114: */ 0x67, 0x72, 0x61, 0x6d,
/* 00000118: */ 0x2e, 0x20, 0x20, 0x57,
/* 0000011c: */ 0x65, 0x20, 0x6f, 0x75,
/* 00000120: */ 0x74, 0x70, 0x75, 0x74,
/* 00000124: */ 0x20, 0x74, 0x68, 0x65,
/* 00000128: */ 0x20, 0x64, 0x61, 0x74,
/* 0000012c: */ 0x61, 0x20, 0x69, 0x6e,
/* 00000130: */ 0x20, 0x74, 0x68, 0x65,
/* 00000134: */ 0x20, 0x66, 0x6f, 0x72,
/* 00000138: */ 0x6d, 0x61, 0x74, 0x20,
/* 0000013c: */ 0x75, 0x73, 0x65, 0x64,
/* 00000140: */ 0x20, 0x61, 0x74, 0x0a,
/* 00000144: */ 0x20, 0x20, 0x20, 0x20,
/* 00000148: */ 0x20, 0x20, 0x20, 0x20,
/* 0000014c: */ 0x20, 0x20, 0x2a, 0x20,
/* 00000150: */ 0x74, 0x68, 0x65, 0x20,
/* 00000154: */ 0x74, 0x6f, 0x70, 0x20,
/* 00000158: */ 0x6f, 0x66, 0x20, 0x74,
/* 0000015c: */ 0x68, 0x69, 0x73, 0x20,
/* 00000160: */ 0x66, 0x69, 0x6c, 0x65,
/* 00000164: */ 0x2c, 0x20, 0x61, 0x6e,
/* 00000168: */ 0x64, 0x20, 0x74, 0x68,
/* 0000016c: */ 0x65, 0x6e, 0x20, 0x77,
/* 00000170: */ 0x65, 0x20, 0x75, 0x73,
/* 00000174: */ 0x65, 0x20, 0x69, 0x74,
/* 00000178: */ 0x20, 0x74, 0x6f, 0x20,
/* 0000017c: */ 0x67, 0x65, 0x6e, 0x65,
/* 00000180: */ 0x72, 0x61, 0x74, 0x65,
/* 00000184: */ 0x20, 0x74, 0x68, 0x65,
/* 00000188: */ 0x20, 0x72, 0x65, 0x73,
/* 0000018c: */ 0x74, 0x0a, 0x20, 0x20,
/* 00000190: */ 0x20, 0x20, 0x20, 0x20,
/* 00000194: */ 0x20, 0x20, 0x20, 0x20,
/* 00000198: */ 0x2a, 0x20, 0x6f, 0x66,
/* 0000019c: */ 0x20, 0x74, 0x68, 0x69,
/* 000001a0: */ 0x73, 0x20, 0x66, 0x69,
/* 000001a4: */ 0x6c, 0x65, 0x2e, 0x20,
/* 000001a8: */ 0x2a, 0x2f, 0x0a, 0x20,
/* 000001ac: */ 0x20, 0x20, 0x20, 0x7b,
/* 000001b0: */ 0x0a, 0x20, 0x20, 0x20,
/* 000001b4: */ 0x20, 0x20, 0x20, 0x75,
/* 000001b8: */ 0x6e, 0x73, 0x69, 0x67,
/* 000001bc: */ 0x6e, 0x65, 0x64, 0x20,
/* 000001c0: */ 0x69, 0x6e, 0x74, 0x20,
/* 000001c4: */ 0x69, 0x3b, 0x0a, 0x20,
/* 000001c8: */ 0x20, 0x20, 0x20, 0x0a,
/* 000001cc: */ 0x20, 0x20, 0x20, 0x20,
/* 000001d0: */ 0x20, 0x20, 0x70, 0x72,
/* 000001d4: */ 0x69, 0x6e, 0x74, 0x66,
/* 000001d8: */ 0x20, 0x28, 0x22, 0x2f,
/* 000001dc: */ 0x2a, 0x20, 0x53, 0x65,
/* 000001e0: */ 0x65, 0x20, 0x63, 0x6f,
/* 000001e4: */ 0x6d, 0x6d, 0x65, 0x6e,
/* 000001e8: */ 0x74, 0x73, 0x20, 0x62,
/* 000001ec: */ 0x65, 0x6c, 0x6f, 0x77,
/* 000001f0: */ 0x20, 0x2a, 0x2f, 0x5c,
/* 000001f4: */ 0x6e, 0x5c, 0x6e, 0x22,
/* 000001f8: */ 0x29, 0x3b, 0x0a, 0x20,
/* 000001fc: */ 0x20, 0x20, 0x20, 0x20,
/* 00000200: */ 0x20, 0x70, 0x72, 0x69,
/* 00000204: */ 0x6e, 0x74, 0x66, 0x20,
/* 00000208: */ 0x28, 0x22, 0x63, 0x6f,
/* 0000020c: */ 0x6e, 0x73, 0x74, 0x20,
/* 00000210: */ 0x75, 0x6e, 0x73, 0x69,
/* 00000214: */ 0x67, 0x6e, 0x65, 0x64,
/* 00000218: */ 0x20, 0x63, 0x68, 0x61,
/* 0000021c: */ 0x72, 0x20, 0x64, 0x61,
/* 00000220: */ 0x74, 0x61, 0x5b, 0x5d,
/* 00000224: */ 0x20, 0x3d, 0x20, 0x7b,
/* 00000228: */ 0x22, 0x29, 0x3b, 0x0a,
/* 0000022c: */ 0x20, 0x20, 0x20, 0x20,
/* 00000230: */ 0x20, 0x20, 0x66, 0x6f,
/* 00000234: */ 0x72, 0x20, 0x28, 0x20,
/* 00000238: */ 0x69, 0x3d, 0x30, 0x20,
/* 0000023c: */ 0x3b, 0x20, 0x69, 0x3c,
/* 00000240: */ 0x73, 0x69, 0x7a, 0x65,
/* 00000244: */ 0x6f, 0x66, 0x28, 0x64,
/* 00000248: */ 0x61, 0x74, 0x61, 0x29,
/* 0000024c: */ 0x20, 0x3b, 0x20, 0x69,
/* 00000250: */ 0x2b, 0x2b, 0x20, 0x29,
/* 00000254: */ 0x0a, 0x20, 0x20, 0x20,
/* 00000258: */ 0x20, 0x20, 0x20, 0x20,
/* 0000025c: */ 0x20, 0x7b, 0x0a, 0x20,
/* 00000260: */ 0x20, 0x20, 0x20, 0x20,
/* 00000264: */ 0x20, 0x20, 0x20, 0x20,
/* 00000268: */ 0x20, 0x69, 0x66, 0x20,
/* 0000026c: */ 0x28, 0x20, 0x69, 0x25,
/* 00000270: */ 0x38, 0x20, 0x3d, 0x3d,
/* 00000274: */ 0x20, 0x30, 0x20, 0x29,
/* 00000278: */ 0x0a, 0x20, 0x20, 0x20,
/* 0000027c: */ 0x20, 0x20, 0x20, 0x20,
/* 00000280: */ 0x20, 0x70, 0x72, 0x69,
/* 00000284: */ 0x6e, 0x74, 0x66, 0x20,
/* 00000288: */ 0x28, 0x22, 0x5c, 0x6e,
/* 0000028c: */ 0x2f, 0x2a, 0x20, 0x25,
/* 00000290: */ 0x30, 0x23, 0x36, 0x78,
/* 00000294: */ 0x20, 0x2a, 0x2f, 0x22,
/* 00000298: */ 0x2c, 0x69, 0x29, 0x3b,
/* 0000029c: */ 0x0a, 0x20, 0x20, 0x20,
/* 000002a0: */ 0x20, 0x20, 0x20, 0x20,
/* 000002a4: */ 0x20, 0x20, 0x20, 0x70,
/* 000002a8: */ 0x72, 0x69, 0x6e, 0x74,
/* 000002ac: */ 0x66, 0x20, 0x28, 0x22,
/* 000002b0: */ 0x20, 0x20, 0x25, 0x30,
/* 000002b4: */ 0x23, 0x34, 0x78, 0x2c,
/* 000002b8: */ 0x22, 0x2c, 0x20, 0x64,
/* 000002bc: */ 0x61, 0x74, 0x61, 0x5b,
/* 000002c0: */ 0x69, 0x5d, 0x29, 0x3b,
/* 000002c4: */ 0x0a, 0x20, 0x20, 0x20,
/* 000002c8: */ 0x20, 0x20, 0x20, 0x20,
/* 000002cc: */ 0x20, 0x7d, 0x0a, 0x20,
/* 000002d0: */ 0x20, 0x20, 0x20, 0x20,
/* 000002d4: */ 0x20, 0x70, 0x72, 0x69,
/* 000002d8: */ 0x6e, 0x74, 0x66, 0x20,
/* 000002dc: */ 0x28, 0x22, 0x5c, 0x6e,
/* 000002e0: */ 0x7d, 0x3b, 0x5c, 0x6e,
/* 000002e4: */ 0x5c, 0x6e, 0x22, 0x29,
/* 000002e8: */ 0x3b, 0x0a, 0x20, 0x20,
/* 000002ec: */ 0x20, 0x20, 0x20, 0x20,
/* 000002f0: */ 0x66, 0x6f, 0x72, 0x20,
/* 000002f4: */ 0x28, 0x20, 0x69, 0x3d,
/* 000002f8: */ 0x30, 0x20, 0x3b, 0x20,
/* 000002fc: */ 0x69, 0x3c, 0x73, 0x69,
/* 00000300: */ 0x7a, 0x65, 0x6f, 0x66,
/* 00000304: */ 0x28, 0x64, 0x61, 0x74,
/* 00000308: */ 0x61, 0x29, 0x20, 0x3b,
/* 0000030c: */ 0x20, 0x69, 0x2b, 0x2b,
/* 00000310: */ 0x20, 0x29, 0x0a, 0x20,
/* 00000314: */ 0x20, 0x20, 0x20, 0x20,
/* 00000318: */ 0x20, 0x20, 0x20, 0x70,
/* 0000031c: */ 0x75, 0x74, 0x63, 0x68,
/* 00000320: */ 0x61, 0x72, 0x20, 0x28,
/* 00000324: */ 0x64, 0x61, 0x74, 0x61,
/* 00000328: */ 0x5b, 0x69, 0x5d, 0x29,
/* 0000032c: */ 0x3b, 0x0a, 0x20, 0x20,
/* 00000330: */ 0x20, 0x20, 0x20, 0x20,
/* 00000334: */ 0x72, 0x65, 0x74, 0x75,
/* 00000338: */ 0x72, 0x6e, 0x20, 0x30,
/* 0000033c: */ 0x3b, 0x0a, 0x20, 0x20,
/* 00000340: */ 0x20, 0x20, 0x7d, 0x0a,
};
/* This is a selfrep (quine) program. It uses the above data (which
* is no other than the ASCII representation of everything starting
* from this comment) to print its own listing. */
#include <stdio.h>
int main (void)
/* The main program. We output the data in the format used at
* the top of this file, and then we use it to generate the rest
* of this file. */
{
unsigned int i;
printf ("/* See comments below */\n\n");
printf ("const unsigned char data[] = {");
for ( i=0 ; i<sizeof(data) ; i++ )
{
if ( i%8 == 0 )
printf ("\n/* %0#6x */",i);
printf (" %0#4x,", data[i]);
}
printf ("\n};\n\n");
for ( i=0 ; i<sizeof(data) ; i++ )
putchar (data[i]);
return 0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment