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

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