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

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