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
:D 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
:allright: 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 :wink:

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 :D

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 :mrgreen:. 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
:o
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/**/