icon_commandline

Ein Quine ist ein Programm, das den eigenen Quelltext ausgibt. Dabei darf nicht auf Dateioperationen zurückgegriffen werden. Sonst wäre es zu einfach. Dann könnte man einfach nur die Datei ausgeben, die den Quelltext enthält.

Das schöne an dieser Aufgabenstellung ist, dass sie zunächst sehr einfach und nach ein paar Versuchen faktisch unmöglich erscheint. Für ein C#-Programm habe ich einen solchen Quine einmal selbst programmiert. Es ist nicht die kürzeste Version, aber sie stellt recht gut das Prinzip dar, nach dem derartige Programme aufgebaut sind: Daten und Programm werden getrennt. Das Programm ist hierbei jedoch auch Teil der Daten.

class MainClass {
    static string[] daten = {
        "  public static void Main(string[] args) {",
        "    Console.WriteLine(\"class MainClass{\");",
        "    Console.WriteLine(\"  static string[] daten = {\");",
        "    for (int i=0; i<daten.Length; i++) ",
        "      Console.WriteLine(\"  \\\"\"+daten[i]+\"\\\",\");",
        "    Console.WriteLine(\"  };\");",
        "    for (int i=0; i<daten.Length; i++)",
        "      Console.WriteLine(daten [i]);",
        "  }",
        "}" };

    public static void Main(string[] args) {
        Console.WriteLine("class MainClass{");
        Console.WriteLine("  static string[] daten = {");
        for (int i=0; i<daten.Length; i++)
            Console.WriteLine("  \"" + daten[i] + "\",");
        Console.WriteLine("  };");
        for (int i=0; i<daten.Length; i++)
            Console.WriteLine(daten [i]);
    }
}

debian raspberrypi lernen docker Chat Arduino Testverfahren wiki bloggen mooc Usenet rs232 Geschichten software Funktionen xmpp Smarthome 34c3 gamejam Film INN Dortmund Kino Spiele TV Linux IoT Datenbank Newsgroup cloud c't Wissenschaft Informatik Windows importiert Psychologie sdr RSS ctf screencast audio python ldl Sport Tipp bildung Sketchnotes Comic Spaß GPIO heise Text serielle Schnittstelle Konferenz hacking Tools 35c3 pdf Studium ubuntu kunst Tafelbild e-mail Termin dtp Bilder Latex bio git programmierung ldlmooc Gesellschaft video game-engine workshop esp8266 Clonezilla SciFi 3dDruck NNTP das-labor Commandline podcast buch ZDF Linkliste JavaScript hardware Second Life Archiv HP35s badge Mathe Taschenrechner ITA ccc Twitter server admin fun