this post was submitted on 07 Sep 2024
221 points (97.8% liked)

Programmer Humor

19503 readers
1408 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 65 points 2 months ago (6 children)

If anyone wants to actually run this, here ya go:

          #include              <stdio.h>
      short i=0;long          b[]={1712,6400
    ,3668,14961,00116,      13172,10368,41600,
  12764,9443,112,12544,15092,11219,116,8576,8832
,12764,9461,99,10823,17,15092,11219,99,6103,14915,
69,1721,10190,12771,10065,16462,13172,10368,11776,
14545,10460,10063,99,12544,14434,16401,16000,8654,
12764,13680,10848,9204,113,10441,14306,9344,12404,
  32869,42996,12288,141129,12672,11234,87,10086,
    12655,99,22487,14434,79,10083,12750,10368,
      10086,14929,79,10868,14464,12357};long
        n=9147811012615426336;long main(){
          if(i<0230)printf("%c",(char)((
            0100&b[i++>>1]>>(i--&0x1)*
              007)+((n>>(b[i>>001]>>
                7*(0b1&01-i++)))&1
                  *main(111))));
                    return 69-
                      0b0110
                        ;}

Bonus points if you can deobfuscate it!

[–] [email protected] 8 points 2 months ago* (last edited 2 months ago) (4 children)

I don't know if this will work or even compile, but I feel like I'm pretty close.

long main () {
    char output;
    unsigned char shift;
    long temp;
    
    if (i < 152) {
        shift = (i & 1) * 7;
        temp = b[i >> 1] >> shift;
        i++;
        output = (char)(64 & temp);
        output += (char)((n >> (temp & 63)) & main());
        printf("%c", output);
    }

    return 63;
}
[–] [email protected] 9 points 2 months ago (1 children)

Here's it with some amount of de-obfuscation:

#include <stdio.h>
short i = 0;
const long b[]
	= { 0xd60,  0x3200,  0x1ca8, 0x74e2, 0x9c,   0x66e8, 0x5100,  0x14500,
		0x63b8, 0x49c6,  0xe0,   0x6200, 0x75e8, 0x57a6, 0xe8,    0x4300,
		0x4500, 0x63b8,  0x49ea, 0xc6,   0x548e, 0x22,   0x75e8,  0x57a6,
		0xc6,   0x2fae,  0x7486, 0x8a,   0xd72,  0x4f9c, 0x63c6,  0x4ea2,
		0x809c, 0x66e8,  0x5100, 0x5c00, 0x71a2, 0x51b8, 0x4e9e,  0xc6,
		0x6200, 0x70c4,  0x8022, 0x7d00, 0x439c, 0x63b8, 0x6ae0,  0x54c0,
		0x47e8, 0xe2,    0x5192, 0x6fc4, 0x4900, 0x60e8, 0x100ca, 0x14fe8,
		0x6000, 0x44e92, 0x6300, 0x57c4, 0xae,   0x4ecc, 0x62de,  0xc6,
		0xafae, 0x70c4,  0x9e,   0x4ec6, 0x639c, 0x5100, 0x4ecc,  0x74a2,
		0x9e,   0x54e8,  0x7100, 0x608a };
const long n = 9147811012615426336;
long
main ()
{
	if (i < 152)
	{
		char shifter;
		if (i % 2 == 0)
		{
			shifter = 8;
		}
		else
		{
			shifter = 1;
		}
		char adder1 = (b[i >> 1] >> shifter) & 64;

		char adder2 = (n >> (b[i >> 1] >> shifter)) & 63;

		char to_print = (char)adder1 + adder2;
		i++;
		main ();
		printf ("%c", to_print);
	}
	return 63;
}

Needless to say, the return value doesn't matter any more. So you can change it to 0 or 69 depending upon your preferences.

[–] [email protected] 5 points 2 months ago

And more de-obf:

#include <stdio.h>

const char addarr1[]
	= { 0x40, 0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x40, 0x40, 0x40,
		0x0,  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x40, 0x40, 0x0,
		0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x40, 0x0,  0x40,
		0x40, 0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x40, 0x0,  0x40,
		0x40, 0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
		0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x0,  0x0,  0x40, 0x40, 0x0,  0x40,
		0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x0,  0x40,
		0x40, 0x40, 0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x0,  0x0,
		0x40, 0x0,  0x40, 0x40, 0x40, 0x0,  0x40, 0x0,  0x40, 0x40, 0x40, 0x40,
		0x0,  0x0,  0x40, 0x40, 0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x0,  0x40,
		0x0,  0x40, 0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x40, 0x0,
		0x40, 0x40, 0x40, 0x40, 0x0,  0x40, 0x0,  0x40, 0x40, 0x40, 0x40, 0x0,
		0x40, 0x40, 0x40, 0x0,  0x0,  0x0,  0x0,  0x0 };

const char addarr2[]
	= { 0x9,  0x26, 0x20, 0x39, 0x2f, 0x35, 0x32, 0x20, 0x2c, 0x2f, 0x36, 0x25,
		0x20, 0x2c, 0x25, 0x34, 0x34, 0x25, 0x32, 0x20, 0x29, 0x33, 0x2e, 0x27,
		0x34, 0x20, 0x27, 0x29, 0x36, 0x25, 0x2e, 0x20, 0x29, 0x2e, 0x20, 0x34,
		0x28, 0x25, 0x20, 0x26, 0x2f, 0x32, 0x2d, 0x20, 0x2f, 0x26, 0x20, 0x28,
		0x29, 0x27, 0x28, 0x2c, 0x39, 0x20, 0x2f, 0x22, 0x26, 0x35, 0x33, 0x23,
		0x21, 0x34, 0x25, 0x24, 0x20, 0x3,  0x2c, 0x20, 0x29, 0x33, 0x20, 0x29,
		0x34, 0x20, 0x32, 0x25, 0x21, 0x2c, 0x2c, 0x39, 0x20, 0x21, 0x20, 0x2c,
		0x2f, 0x36, 0x25, 0x20, 0x2c, 0x25, 0x34, 0x34, 0x25, 0x32, 0x3f, 0xa,
		0x9,  0x20, 0x24, 0x2f, 0x2e, 0x27, 0x34, 0x20, 0x2b, 0x2e, 0x2f, 0x37,
		0x2c, 0x20, 0x22, 0x35, 0x34, 0x20, 0x37, 0x28, 0x21, 0x34, 0x20, 0x9,
		0x20, 0x24, 0x2f, 0x20, 0x2b, 0x2e, 0x2f, 0x37, 0x20, 0x29, 0x33, 0x20,
		0x34, 0x28, 0x21, 0x34, 0x20, 0x9,  0x20, 0x2c, 0x2f, 0x36, 0x25, 0x20,
		0x39, 0x2f, 0x35, 0x21, 0x20, 0x3c, 0x33, 0xa };

int main ()
{
	for (int i = 0; i < 152; i++)
	{
		char adder1 = addarr1[i];

		char adder2 = addarr2[i];

		char to_print = (char)adder1 + adder2;

		printf ("%c", to_print);
	}
	return 63;
}

I guess I should have kept the recursion and straightened it out in the next step, but now that it's done...

The next step will just have an array of the characters that would be printed, so I'll leave it here.

load more comments (2 replies)
load more comments (3 replies)