Hard Light Productions Forums

Off-Topic Discussion => Programming => Topic started by: blackhole on November 30, 2008, 08:49:24 pm

Title: Omnomified
Post by: blackhole on November 30, 2008, 08:49:24 pm
I wrote this sometime last year - I just found it again. I might have posted it here before, but it seems like it should be in the programming board (which didn't exist back then).

Code: [Select]
#include <iostream>
#include <stdlib.h>

using namespace std;

typedef char NOM;
typedef void NoM;
typedef int nOM;
typedef size_t OmNoM;
typedef bool OMnOm;

#define OMNOmNOMnom
#define OMnOMnoM 175
#define OMNOMNOMnOM 1
#define OMNoM true
#define OMNOm false
#define OMnomNOM(omNom) cout << omNom
#define OMnomNOMnom(omNom) cout << omNom << endl
#define OmNOM(nOMNOm) delete nOMNOm
#define OmNOmNOm(nOMNOm) delete [] nOMNOm
#define omnOMnom(noMNom) strlen(noMNom)
#define OMNOmnoM(omNOm, OmNOm) strcmp(omNOm, OmNOm)
#define OMNoMnOm(omNoM, oMNOM, oMNOm) strcpy(omNoM, oMNOm)

/* NOMNOM - OMNOM NOM NOM OM NOMNOMNOM */
class NOMNOM
{
public:
  NOMNOM(NOM* nOM=0);
  ~NOMNOM();
  NOM* oMnom();
  NoM oMNOM(NOM* nOM);
 
private:
  NOM* omNOm; //NOM
};

/* OM - NOMNOMNOMNOM OMNOMNOM NOMNOM OM NOM */
class OM : NOMNOM
{
public:
  OM(NOM* Om=0, NOM* nOM=0);
  ~OM();
  OMnOm OMNOMNom();
  NOM* OMnOmnom();
  NoM OMNoMnom(NOM* Om);

private:
  NOM* oMnOM; //OM NOM
};

/* OM NOMNOMNOMNOMNOM */
NOMNOM::NOMNOM(NOM *nOM)
{
  if(!nOM)
    omNOm = 0; //NOMNOM OMNOM
  else
  {
    OmNoM omnOMNOm = omnOMnom(nOM)+1; //NOMNOM NOM NOM NOMNOM
    omNOm = new NOM[omnOMNOm];
    OMNoMnOm(omNOm, omnOMNOm, nOM); //OM NOM
  }
}

/* OMNOMNOM - NOM */
NOMNOM::~NOMNOM()
{
  if(omNOm != 0)
  {
    OmNOmNOm(omNOm); //NOM OMNOMNOMNOMNOM
    omNOm = 0;
  }
}

/* NOMNOM OMNOMNOMNOM NOM NOM */
NOM* NOMNOM::oMnom()
{
  return omNOm; //OMNOM
}

/* NOM NOM */
NoM NOMNOM::oMNOM(NOM *nOM)
{
  if(omNOm != 0)
  {
    OmNOmNOm(omNOm);  //NOM OMNOMNOMNOMNOM
    omNOm = 0;
  }

  OmNoM omnOMNOm = omnOMnom(nOM)+1; //NOMNOM NOM NOM NOMNOM
  omNOm = new NOM[omnOMNOm];
  OMNoMnOm(omNOm, omnOMNOm, nOM); //OM NOM
}

/* OMNOM NOM NOMNOMNOM om NOM nOM Om */
OM::OM(NOM *Om, NOM *nOM) : NOMNOM(nOM)
{
if(!Om)
    oMnOM = 0; //NOMNOM OMNOM
  else
  {
    OmNoM omnOMNOm = omnOMnom(Om)+1;
    oMnOM = new NOM[omnOMNOm];
    OMNoMnOm(oMnOM, omnOMNOm, Om);
  }
}

/* OMNOMNOM */
OM::~OM()
{
  if(oMnOM != 0)
  {
    OmNOmNOm(oMnOM); //OMNOMNOMNOM NOM
    oMnOM = 0;
  }
}

/* OMNOM - NOM */
OMnOm OM::OMNOMNom()
{
  if(!oMnOM || !oMnom()) //NOM NOM OMNOM
    return OMNOm;

  OMnomNOM(oMnOM); //OMNOMNOM

  for(nOM nomnomnom = 0; nomnomnom < OMnOMnoM; ++nomnomnom)
  {
    OMnomNOM(oMnom());

    if(nomnomnom == OMnOMnoM-OMNOMNOMnOM)
      OMnomNOMnom(oMnom());
  }

  return OMNoM;
}

/* OM OMNOMNOMNOM NOM NOM */
NOM* OM::OMnOmnom()
{
  return oMnOM; //OMNOM
}

/* OM NOM NOM */
NoM OM::OMNoMnom(NOM* Om)
{
  if(oMnOM != 0)
  {
    OmNOmNOm(oMnOM);  //NOM OMNOMNOMNOMNOM
    oMnOM = 0;
  }

  OmNoM omnOMNOm = omnOMnom(Om)+1; //NOMNOM NOM NOM NOMNOM
  oMnOM = new NOM[omnOMNOm];
  OMNoMnOm(oMnOM, omnOMNOm, Om); //OM NOM
}

/* NOMNOMNOMNOMNOM - OMNOMNOM */
nOM OMNOmNOMnom main(nOM OMnoM, NOM** omNoM)
{
  OM* OMNOMNOM = new OM("OM", "NOM");
  OMnOm OMnoMNOm = OMNoM; //OM NOMNOM

  while(OMnoMNOm)
  {
    NOM OMnomnom[256]; //NOM
    cin >> OMnomnom; //OM NOM NOM NOM

    if(!OMNOmnoM(OMnomnom, "OMNOMNOM")) //NOMNOMNOMNOMNOMNOMNOMNOMNOM
      OMnoMNOm = OMNOm; //OM
    else
      OMNOMNOM->OMNOMNom(); //OMNOM NOMNOM
  }

  OmNOM(OMNOMNOM);
}
Title: Re: Omnomified
Post by: Galemp on November 30, 2008, 10:11:18 pm
Reminds me of Ook.
Title: Re: Omnomified
Post by: Stormkeeper on November 30, 2008, 11:51:28 pm
Whats the output like?
Title: Re: Omnomified
Post by: Dark Hunter on December 01, 2008, 02:09:32 am
Yes, I think you did post it before, and it's still funny! :lol:
Title: Re: Omnomified
Post by: blackhole on December 01, 2008, 03:51:43 am
Whats the output like?

OMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOM
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
NOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNOMNO M
...yeah
Title: Re: Omnomified
Post by: castor on December 01, 2008, 12:20:44 pm
Gung'f na njshy ybg bs bzf!
Title: Re: Omnomified
Post by: Colonol Dekker on December 01, 2008, 01:04:29 pm
I'd like to that as an .exe please :) work won't know what hit them.
Title: Re: Omnomified
Post by: Martinus on December 01, 2008, 06:21:34 pm
:D Very cool.
Title: Re: Omnomified
Post by: DragonClaw on December 02, 2008, 11:00:13 am
Ow, trying to figure out exactly what the code does hurt my head  :blah:
Title: Re: Omnomified
Post by: Colonol Dekker on December 02, 2008, 11:32:25 am
Where's my .exe ?
Title: Re: Omnomified
Post by: Mika on December 03, 2008, 04:23:10 pm
IOCCC's webpage lists Pawka's entry in 1986:

Code: [Select]
#include "stdio.h"
#define xyxx char
#define xyyxx putchar
#define xyyyxx while
#define xxyyyx int
#define xxxyyx main
#define xyxyxy if
#define xyyxyy '\n'
xyxx *xyx [] = {
"]I^x[I]k\\I^o[IZ~\\IZ~[I^|[I^l[I^j[I^}[I^n[I]m\\I]h",
"]IZx\\IZx[IZk\\IZk[IZo_IZ~\\IZ~[IZ|_IZl_IZj\\IZj]IZ}]IZn_IZm\\IZm_IZh",
"]IZx\\IZx[I^k[I\\o]IZ~\\IZ~\\I]|[IZl_I^j]IZ}]I^n[IZm\\IZm_IZh",
"]IZx\\IZx[IZk\\IZk[IZo_IZ~\\IZ~_IZ|[IZl_IZj\\IZj]IZ}]IZn_IZm\\IZm]IZh",
"]I^x[I]k\\IZo_I^~[I^|[I^l[IZj\\IZj]IZ}]I^n[I]m^IZh",'\0'};/*xyyxyxyxxxyxxxyy*/
xyxx *xyyx; xxyyyx xyyyx,xyyyyx,xyyyyyx=0x59,xyyyyyyx=0x29,/*yxxyxyyyxxyyyxyy*/
xxyx=0x68;xxxyyx(){xyyyyx=0;xyyyxx(xyx[xyyyyx]){xyyx=xyx[xyyyyx++];/*xyyyxxyx*/
xyyyxx(*xyyx){xyyyx= *xyyx++-xyyyyyx;xyyyxx(xyyyx--)xyyxx(*xyyx-xyyyyyyx);/*x*/
xyxyxy(*xyyx==xxyx)xyyxx(xyyxyy);*xyyx++;}}}/*xyxyxyyyyxxyxxxyyyxyyyxyxxyyy*/

The other goodie is Korn's oneliner printing program (1987):

Code: [Select]
main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}

I'm personally not willing to know how that one could even work.

More recent ones are a lot more crazier and next to impossible to figure out if one hasn't spent 20 years with C/C++.

Mika
Title: Re: Omnomified
Post by: blackhole on December 06, 2008, 12:56:22 am
I attached it as an EXE. You simply type in anything and it will reply with a bunch of 'NOMs.

[attachment stolen by Slimey Goober]
Title: Re: Omnomified
Post by: Colonol Dekker on December 06, 2008, 02:30:14 am
Yay! *does the happy dance.