PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : hausaufgabe :)



marius
05-11-2004, 01:41
fuer alle die spass an ner kleinen herrausforderung interssiert sind.

schreibe ein program (in c/c++, c sollte reichen) welches seinen eigenen quellcode (komplett) ausgibt, nicht mehr und nicht weniger.
wobei die quelltext datei natuerlich dafuer nicht zur verfuegung steht!

viel spass
marius

peschmae
05-11-2004, 08:55
Wie soll denn das gehen?

MfG Peschmä

locus vivendi
05-11-2004, 08:59
Nennt sich quiblle. Es gibt kreative und wenig kreative Lösungen. Ich habe eine wenig kreative Lösung mit der sich aber im Grunde jedes Programm in ein quiblle verwandeln lässt.

Joghurt
05-11-2004, 12:17
Hier ist meins in C, in Python hatte ich es schonmal gemacht ;)
main(){char*a="main(){char*a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}

dark_red
05-11-2004, 12:51
Geht das wirklich?

Für mich klingt das ein wenig nach: "Erstelle ein Programm, dass aus einem 50% komprimierten JPG das unkomprimierte Originalbild wiederherstellt... " :D

Joghurt
05-11-2004, 12:58
Geht das wirklich?Siehe oben...

Boron
05-11-2004, 13:21
Den Quelltext als String in den Code zu schreiben scheint mir aber keine elegante Lösung zu sein.
Aber ich weiß auch nicht, wie es anders ginge.

cybercrow
05-11-2004, 13:27
ich habe auch noch eins, aber etwas größer wie das von Joghurt:



extern int printf(const char*, ...);char*f="extern int printf(const char*, ...);char*f=%c%s%c;int main(){printf(f,34,f,34,10); return 0;}%c";int main(){printf(f,34,f,34,10); return 0;}


Aber dafür ist meines näher am Standard und wird auch vom C++ Kompiler geschluckt :p

Joghurt
05-11-2004, 15:09
ich habe auch noch eins, aber etwas größer wie das von Joghurt:als! Bei gleichheit "wie", bei ungleichheit "als" (SCNR)
Dein Code ist dasselbe in Grün, nur wie du schon sagtest, auch C++ konform (printf deklariert und mit newline abgeschlossen)

dark_red
05-11-2004, 15:37
Kann mir jemand erläuter, was der Code genau macht? Ein wenig C konnte ich mal, aber da komm ich nicht mit :)

marius
09-11-2004, 02:24
@dark_red: das mit deinem vorschlag aus einem jpeg das original wiederherzustellen ist gar nich sooo abwaegig, auch wenn man das wohl noch nicht zu 100% kann.
is aber schon krass was man so mit fuzzy methoden hinbekommt, besonders im graphik bereich.

@rest: schoene loesungen jungs (maedels!?) :)

doomcalyptica
09-11-2004, 15:04
ehm, das compilierte programm, meinet wegen in C geschrieben, wurde doch durch die complierung in assembler und schließlich in folgen von nullen und einsen konvertiert. von dempunkt an kann man doch widda ein proggie schreiben, das die einsen und nullen widda zu assembler zurück assemblieren und den daraus gewonnen source zurück zu einer hochsprache bauen, somit kann ich doch auch von anderen sprachen zu C konvertieren .... wenn das möglich ist (gibts glaub ich sowas änhliches) dann kann ich doch auch die teure DOOM3 engine in assembler konvertiren und dann mit assembler auf geschwindigkeit opimieren und widda verkaufen und sagen, jo, ich habe auch das gleiche wie john carmack nur schneller ...
man könnte den windows source suchen nd ihn veröffentlich, dies würde $M in den ruin treiben ....

marius
12-11-2004, 02:39
ja disassemblen ist ja nun eine gaengige methode, die doom 3 engine in assembler auf geschwindigkeit optimieren, nunja moeglich ist alles, nur ob aufwand und ergebniss da im verhaeltniss stehen bezweifle ich.
das reversen von assemblercode in eine hochsprache ist eine wissenschaft fuer sich, und nicht vollstaendig moeglich. wird zu 100% auch nie moeglich sein, da einfach zu viele trapdoor sachen bei einer compilierung stattfinden (quasi: nummer zu einem namen im telefonbuch finden ist trivial, namen zur nummer finden nicht).

was du mit dem post ueberhaupt aber meinst ist mir immer noch nicht ganz klar...

gruss
marius