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]);
    }
}

Tafelbild Chat server python Gesellschaft TV Linux hardware screencast film Windows Comic Linkliste Geschichten bloggen game-engine ctf raspberrypi gamejam fun Twitter software e-mail Funktionen importiert pdf lernen bildung Second Life Termin Sport admin RSS kunst cloud Mathe esp8266 HP35s audio Clonezilla Konferenz Wissenschaft 34c3 das-labor podcast Spiele programmierung Tipp buch mooc Studium wiki Kino Tools git Text JavaScript ldl Spaß ccc review Latex ldlmooc video llm Bilder Taschenrechner Dortmund hacking c't 39c3 35c3 Datenbank Informatik