Quine / Self-replicating prog

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Quine / Self-replicating prog

Beitrag 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]
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

:D Das kannte ich noch gar nicht.

Auf die Schnelle fällt mir aber nur die allerkürzeste Lösung ein:
!UD2
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

:allright: dein code is sogar zu 1000% portabel - läuft sogar auf nem rechenschieber, auf obst, und bestimmt auch in ner badewanne.
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag 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
!UD2
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Dann brauchts noch eine Texterkennung :mrgreen:. Oder man ermittelt
das Scintilla Gadget der IDE und kopiert dann den Text raus ;).
Bild
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

in C gibt's hier ein paar im kapitel 11. vom A to Z of C
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag 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/**/
!UD2
Antworten