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