Contest: 19 August 2008 - 21 August 2008
-
ich hab noch ein #include vorne drann gemacht, dann hat es den fünf zahlen standgehaten... hat fertig kompiliert jedoch auch 16KB
-
camper schrieb:
S.T.A.L.K.E.R. schrieb:
Dein Code ist so schon in Ordnung, zwar sehr lang, aber er ist weder schwer zu verstehen noch unübersichtlich.
Ein sehr langer Code ist auch immer unübersichtlich.
int i = 0, wert = 1000; while( eingabe > 0 ) if ( eingabe >= wert ) { cout << i["MDCLXVI"]; eingabe -= wert; } else wert /= ++i % 2 ? 2 : 5;Dürfte kaum zu erheblich kleinerem binary führen.
kannst du das prog mal so posten, dass es funktioniert?
-
LittleGamer3 schrieb:
kannst du das prog mal so posten, dass es funktioniert?
Das Programmgerüst hast du doch vorgegeben.
-
camper schrieb:
cout << i["MDCLXVI"];Komm schon, das hast du nur gemacht um ihn zu flachsen

-
Dein Prog hat 13.008 KB
-
.filmor schrieb:
camper schrieb:
cout << i["MDCLXVI"];Komm schon, das hast du nur gemacht um ihn zu flachsen

ehrlich gesagt find ich den else block unübersichtlicher
-
kannst ja das cout-Statement mal durch putchar ersetzen und gegen den anderen Code antreten lassen.
-
camper schrieb:
S.T.A.L.K.E.R. schrieb:
Dein Code ist so schon in Ordnung, zwar sehr lang, aber er ist weder schwer zu verstehen noch unübersichtlich.
Ein sehr langer Code ist auch immer unübersichtlich.
Immer nicht. Sein Programm wirkt auf der ersten Blick zwar furchtbar kompliziert, aber wenn man es sich dann anschaut sieht man ja gleich, dass am Anfang eine Schleife ist mit zwei Zeilen Inhalt und danach kommen ja nur noch if-Blöcke die man von oben nach unten runterlesen kann. Und da ist ja keine komplizierte Logik drin versteckt.
Die Zeit das Programm von ihm zu verstehen verbringt man bei deinem Vorschlag schon mit i["MC..."].Ich nehm mal an dein i["MC..."] würdest du in ein richtiges Programm nicht schreiben, sonst müsst ich dich jetzt noch belehren

-
.filmor schrieb:
camper schrieb:
cout << i["MDCLXVI"];Komm schon, das hast du nur gemacht um ihn zu flachsen

Ich glaube keinen Zweifel daran gelassen zu haben, dass ich das Ganze nicht ernst nehme.
-
S.T.A.L.K.E.R. schrieb:
camper schrieb:
S.T.A.L.K.E.R. schrieb:
Dein Code ist so schon in Ordnung, zwar sehr lang, aber er ist weder schwer zu verstehen noch unübersichtlich.
Ein sehr langer Code ist auch immer unübersichtlich.
Immer nicht. Sein Programm wirkt auf der ersten Blick zwar furchtbar kompliziert, aber wenn man es sich dann anschaut sieht man ja gleich, dass am Anfang eine Schleife ist mit zwei Zeilen Inhalt und danach kommen ja nur noch if-Blöcke die man von oben nach unten runterlesen kann. Und da ist ja keine komplizierte Logik drin versteckt.
Das ist nicht alles. Das Verständnis mag keine Probleme bereiten, aber wie lange brauchst du, um sicher zu sein, das sich auch keine kleinen Tippfehler eingeschlichen haben? Bedenke einfach mal die Zahl der Testfälle, um alle if-Verzweigungen zu überprüfen.
-
#include <cstdio> int Rom(int ein, int teiler, char rom){ int temp; temp = ein / teiler; if(temp){ for(int i = 0; i < temp; i++) putchar(rom); return ein % teiler; }else return ein; } int main(){ int eingabe = 0; int teiler = 1000; char rom[] = {'M', 'D', 'C', 'L', 'X', 'V', 'I'}; scanf("%u", &eingabe); for(int i = 0; i < 7; i++){ eingabe = Rom(eingabe, teiler, rom[i]); teiler /= 2; } putchar('\n'); return 0; }Auf einem MacBook Pro(10.4) ist die compilierte Datei 13980 Bytes gross.
Habe auch mal ne einfache Main Funktion (return 0) compilieren lassen...
Ist genau so gross...
-
Ich installier mir grad windows, so dass ich den contest trotzdem durchführen kann
-
#include <cstdio> int Rom(int ein, int teiler, char rom){ int temp, i; temp = ein / teiler; if(temp){ for(i = 0; i < temp; i++) putchar(rom); return ein % teiler; }else return ein; } int main(){ int eingabe = 0, i; int teiler[] = {1000, 500, 100, 50, 10, 5, 1}; char rom[] = {'M', 'D', 'C', 'L', 'X', 'V', 'I'}; scanf("%u", &eingabe); for(i = 0; i < 7; i++){ eingabe = Rom(eingabe, teiler[i], rom[i]); } putchar('\n'); return 0; }Sorry, hab nen Fehler mit dem Teiler gemacht...

-
So, hier mal kurz der Zwischenstand:
1. zwutz & styx (16,2KB)
2. camper (477KB)
3. LittleGamer3 (478KB)Hinweis:
Die Executables wurden unter windows kompiliert
-
solltest mal lernen wie man den compiler richtig einstellt.
-
LittleGamer3 schrieb:
2. camper (477KB)
3. LittleGamer3 (478KB)nicht dein Ernst, oder?
-
du boone schrieb:
solltest mal lernen wie man den compiler richtig einstellt.
Schreibs doch einfach...
Doch ist mein ernst zumindest wirds mal angezeigt
-
camper schrieb:
[
int i = 0, wert = 1000; while( eingabe > 0 ) if ( eingabe >= wert ) { cout << i["MDCLXVI"]; eingabe -= wert; } else wert /= ++i % 2 ? 2 : 5;Dürfte kaum zu erheblich kleinerem binary führen.
alter schwede was du für code schreibst ist ja nicht mehr normal codest du 10 stunden am tag mit c++?
-
ommffg schrieb:
alter schwede was du für code schreibst ist ja nicht mehr normal codest du 10 stunden am tag mit c++?
Was hat das damit zu tun?
Obwohl es noch nicht wirklich das ist:
http://en.wikipedia.org/wiki/Obfuscated_codeSchreib einmal funktionierenden Code und dann verkürze den, wo es geht. Dann bist du schnell bei unleserlichem Code, den mal selber nach ein paar Tagen nicht mehr lesen kann.
-
Hi LittleGamer3,
12976 Byte mit MacBook Pro auf Mac OS X 10.5
keine Optimierungen: g++ spille.cpp -o romq
#include <iostream> const char letters[] = {'M', 'D', 'C', 'L', 'X', 'V', 'I'}; const unsigned int values[] = {1000, 500, 100, 50, 10, 5, 1}; int main() { int eingabe; std::cin >> eingabe; unsigned int i = 0; while(eingabe){ unsigned int j = values[i]; if(eingabe>=j){ std::putchar(letters[i]); eingabe -= j; } else ++i; } std::putchar('\n'); return 0; }Gruß,
CSpille