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).
#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);
}