Seite 1 von 1
Quine / Self-replicating prog
Verfasst: 21.05.2006 12:49
von #NULL
ich habe bisher noch kein quine oder ein self-replicating program in der sprache PureBasic gefunden und hab mich mal selbst dran versucht:
Code: Alles auswählen
s$="s$= : Debug Mid(s$,1,3)+Chr(34)+s$+Chr(34)+Mid(s$,4,100)" : Debug Mid(s$,1,3)+Chr(34)+s$+Chr(34)+Mid(s$,4,100)
es würde mich interessieren, wenn ihr anderen selbst-replizierenden code geschrieben habt oder kennt, der kürzer oder einfach cooler ist.
[ein self-replicating programm ist ein programm, welches seinen eigenen (code-)inhalt ausgibt]
Verfasst: 21.05.2006 19:24
von Froggerprogger

Das kannte ich noch gar nicht.
Auf die Schnelle fällt mir aber nur die allerkürzeste Lösung ein:
Verfasst: 21.05.2006 20:07
von #NULL

dein code is sogar zu 1000% portabel - läuft sogar auf nem rechenschieber, auf obst, und bestimmt auch in ner badewanne.
Verfasst: 13.07.2006 10:23
von Froggerprogger
Mir ist neulich durch Zufall noch eine lange Version aufgefallen:
Voraussetzung: Der Code befindet sich sichtbar im Editorfenster und wird dann direkt von dort ohne Debugger ausgeführt. Ach ja, und der Drucker ist angeschlossen und angeschaltet
Code: Alles auswählen
CreateImage(0, GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
DC = StartDrawing(ImageOutput(0))
BitBlt_(DC,0,0,ImageWidth(0),ImageHeight(0),GetDC_(GetDesktopWindow_()),0,0,#SRCCOPY )
StopDrawing()
ReleaseDC_(GetDesktopWindow_(), DC)
w = PrinterPageWidth()
h = PrinterPageWidth() * 3 / 4
ResizeImage(0, w, h, #PB_Image_Smooth)
StartPrinting("Screenshotprint")
StartDrawing(PrinterOutput())
DrawImage(ImageID(0), (PrinterPageWidth() - w) / 2, (PrinterPageHeight() - h) / 2)
StopDrawing()
StopPrinting()
Auf jeden Fall self-replicating

Verfasst: 13.07.2006 10:31
von Kaeru Gaman
netter witz...
> Auf jeden Fall self-replicating
genaugenommen nicht, denn er gibt nicht seinen code aus, sondern ein foto davon, das ist nicht ganz dasselbe...

Verfasst: 13.07.2006 10:32
von MVXA
Dann brauchts noch eine Texterkennung

. Oder man ermittelt
das Scintilla Gadget der IDE und kopiert dann den Text raus

.
Verfasst: 13.07.2006 10:49
von #NULL
in C gibt's hier ein paar im
kapitel 11. vom
A to Z of C
Verfasst: 13.07.2006 11:44
von Froggerprogger
11.3 ist ja abgefahren!
Sowohl self-replicating, als auch Palindrom (von Dan Hoey):
Hier:
Code: Alles auswählen
/**/char q='"',*a="*//**/char q='%c',*a=%c%s%c*/};)b(stup;]d[b=]d-
472[b)--d(elihw;)q,a,q,q,2+a,b(ftnirps;)b(stup{) (niam;731=d ni;]572
[b,",b[275];int d=137;main(){puts(b);sprintf(b,a+2,q,q,a,q);while(d--)
b[274-d]=b[d];puts(b);}/*c%s%c%=a*,'c%'=q rahc/**//*"=a*,'"'=q rahc/**/