Tentokrát budeme doplňovat program, který nevypadá jako Céčkový ani C++ový, tak, že bude přeložitelný překladačem C či C++ a bude dělat to samé, co původní program.
Zadání
Uvažujte následující kód, který nápadně připomíná Hello World zapsaný v jazyce Java.
// ??? public static void main(String[] args) { System.out.println("Ahoj svete!"); }
Co je třeba do kódu doplnit na místo označené komentářem s otazníky, aby zadaný program šel přeložit překladačem podle normy C99 či C++98 a po spuštění vypsal "Ahoj svete!" (bez uvozovek)? "Vítězí" řešení s nejmenším počtem použitých znaků ;).
Řešení
S varováními (202 znaků):
#define public union String{union{int println(char*s){printf(s);}}out; #define args);}System;int main( #include<cstdio> public static void main(String[] args) { System.out.println("Ahoj svete!"); }
Bez varování (210 znaků):
#define public union String{union{void println(const char*s){printf(s);}}out; #define args );}System;int main( #include<cstdio> public static void main(String[] args) { System.out.println("Ahoj svete!"); }
Řešení je založeno na příspěvcích od Libora.
Řešení 1
Re: Řešení 1
Díky za odpověď -- je to správně :). Podaří se to někomu zkrátit? (Jen poznamenám, že to lze zkrátit o téměř 50 znaků.)
Skoro o 50 znaků lepší, ale s
Skoro o 50 znaků lepší, ale s warningy (ukazatel prý není číslo :D):
I bez warningů už se vejdu na 8 bitů:
Co se počítá?
Re: Skoro o 50 znaků lepší, ale s
Obojí ;). Budu to brát jako dvě verze: s warningy a bez warningů. Já jsem teď na 217 s warningy a 228 bez warningů.
update
Žádný nový trik, jen skrácení příliš dlouhých identifikátorů, než mi to někdo vyžere.
Btw, to od tebe není pěkné, snižovat laťku během hry :p
Re: update
> Btw, to od tebe není pěkné, snižovat laťku během hry :p
Já vím :].
New WR?
Čisté C
Ještě pro doplnění čisté céčko (ne špinavé c++)
Re: New WR?
Wow, pěkné ;). Kdyby to bylo v předmětu, tak Ti dám bonusový bod :). Když jsem použil ten tvůj poslední trik, tak jsem se dostal na 202 s warningy a 210 bez warningů ;). Ať je nějaká sranda, tak to zveřejním (vyměnil jsem struct za union a ukazatel na funkci za metodu).
S warningy (202):
Bez warningů (210):
Zveřejněno řešení #12
Zveřejnil jsem řešení dvanácté úlohy.