Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Quine (https://www.delphipraxis.net/118163-quine.html)

mr_emre_d 1. Aug 2008 18:21

Re: Quine
 
ich habs mir angeschaut !
Den Sinn versteh ich aber trotzdem nicht .. !!!

:|
da, mein Einzeiler
Code:
program a;{$APPTYPE CONSOLE}const b='program a;{$APPTYPE CONSOLE}const a=begin end.';begin write(b) end.

mkinzler 1. Aug 2008 18:22

Re: Quine
 
Ein Programm, welches ihren Quelltext ausgibt.

mr_emre_d 1. Aug 2008 18:25

Re: Quine
 
Und ? Was soll das bringen ?
Man programmiert doch nichts, was man nicht braucht ... !

mkinzler 1. Aug 2008 18:27

Re: Quine
 
Wenn der Weg das Ziel ist schon ...

Dax 1. Aug 2008 18:28

Re: Quine
 
Zitat:

Zitat von mr_emre_d
Und ? Was soll das bringen ?

Theorie. Quines sind die Anwendung des Fixpunktsatzes der Rekursionstheorie - und das ist ein schönes, einleuchtendes Beispiel dafür.

FAlter 1. Aug 2008 18:33

Re: Quine
 
Hi,

das macht einfach mal Spaß. Da fühlt man sich gleich häppi und is viel besser als Drogen :mrgreen:

Der Sinn ist es, was lustiges zu tun. Am einfachsten geht es natürlich in HQ9+:

Code:
Q
Mein erster Gedanke war es, einen HQ9+-Interpreter zu programmieren. Dann habe ich stattdessen einen Quine in Delphi geschrieben. Nur so, einfach als Gag, und weil ich in der DP noch keinen gefunden habe. Sowas darf doch nicht fehlen! :stupid:

Mfg
FAlter

[edit] Nachtrag:

Zitat:

Zitat von mr_emre_d
ich habs mir angeschaut !
Den Sinn versteh ich aber trotzdem nicht .. !!!

:|
da, mein Einzeiler
Code:
program a;{$APPTYPE CONSOLE}const b='program a;{$APPTYPE CONSOLE}const a=begin end.';begin write(b) end.

Hi,

jaa, was dein Programm ausgibt, lässt sich nicht mal compilieren:

Delphi-Quellcode:
program a;{$APPTYPE CONSOLE}const a=begin end.
Wenn du die Ausgabe meines Programmes compilierst, erhältst du wieder mein Programm, das ist ein Quine. Es gehört schon ein wenig denken dazu, daher musste ich ja den String in sich selbst so komisch einfügen.

Einen Fehler hab ich allerdings gemacht :oops:

Code:
program Quine; {$APPTYPE CONSOLE} var x: String = 'program Quine; {$APPTYPE CONSOLE} var x: String = ; begin Insert(#39 + x + #39, x, [b]50[/b]); writeln(x); readln; end.'; begin Insert(#39 + x + #39, x, [b]51[/b]); writeln(x); readln; end.
Naja, ist schnell geändert... werds gleich mal korrigieren.

[/edit]

mr_emre_d 2. Aug 2008 03:32

Re: Quine
 
ups, hab mich beim zusammenkopieren vertan :oops: :
Edit:
so müsste es passen:
Code:
program a;{$APPTYPE CONSOLE}const b='program a;{$APPTYPE CONSOLE}const b='''';begin write(b); readln end.';begin write(b) end.
Obwohl .. das ist auch gemogelt .. in b in b steht nicht der code drinnen... geht ja auch nicht xD

Dax 2. Aug 2008 04:26

Re: Quine
 
Das sind alles keine Quines! Sie geben nicht den eigenen Quelltext aus, also treffen sie nicht die Definition ;)

Das ist ein Quine:
Delphi-Quellcode:
program Quine; uses SysUtils; {$APPTYPE CONSOLE} const text = 'program Quine; uses SysUtils; {$APPTYPE CONSOLE} const text = ''~''; begin Write(StringReplace(''~'', text, [])); end.'; begin Write(StringReplace('~', text, [])); end.

FAlter 2. Aug 2008 10:52

Re: Quine
 
Hi,

meine Quines kommen ohne die SysUtils aus (nur System!). Und sie geben wirklich den eigenen Quelltext aus! Hast du dir die Ausgaben überhaupt angesehen?

Quelltext:

Delphi-Quellcode:
program Quine; {$APPTYPE CONSOLE} var x: String = 'program Quine; {$APPTYPE CONSOLE} var x: String = ; begin Insert(#39 + x + #39, x, 51); writeln(x); readln; end.'; begin Insert(#39 + x + #39, x, 51); writeln(x); readln; end.
Ausgabe:
Code:
program Quine; {$APPTYPE CONSOLE} var x: String = 'program Quine; {$APPTYPE CONS
OLE} var x: String = ; begin Insert(#39 + x + #39, x, 51); writeln(x); readln; e
nd.'; begin Insert(#39 + x + #39, x, 51); writeln(x); readln; end.
Bei der anderen Fassung fehlen noch die beiden readln; (im String und die Anweisung).

Nur was mr_emre_d versucht, sind bisher keine Quines gewesen. Mit Konstanten gehts auch nicht, denn es muss ja irgendwie das ganze nochmal dazwischengemogelt werden*. Es sei denn, die Sprache erlaubt den Zugriff auf den Quelltext (was aber i. d. R. nur für Interpretersprachen gilt, und selbst da nicht für alle).

Mfg
FAlter

*) Ok, wenn es zuweisbare Konstanten sind, schon... Dieses uralte TP-Überbleibsel gibts ja auch noch.

Apollonius 2. Aug 2008 14:05

Re: Quine
 
Bist du dir sicher, dass es mit Konstanten nicht geht? Ich habe das zwar nicht ganz durchdacht, aber es müsste mit for-Schleifen möglich sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz