Ihre Aufgabe ist es, ein Programm mit gerader Länge zu schreiben , das ein ASCII-Art-Quadrat (siehe unten) druckt und dessen Seitenlänge jedes Mal um 1 Einheit erhöht, wenn der ursprüngliche Quellcode in die Mitte des aktuellen Codes eingefügt wird.
Es fällt mir sehr schwer, diese Aufgabe gut zu definieren. Ich gebe Ihnen ein Beispiel:
Angenommen, Ihr ursprünglicher Code war
CODE
und er wurde gedruckt:0
Dann fügen Sie
CODE
in der Mitte ein: Ihr Code wirdCOCODEDE
und es sollte gedruckt werden:00 00
Neu einfügen
CODE
in der Mitte: Ihr Code wirdCOCOCODEDEDE
und sollte drucken:000 000 000
Und so weiter. Ihre Antwort sollte theoretisch nach einer beliebigen Anzahl von Iterationen funktionieren, aber ich verstehe, dass sie aufgrund von Einschränkungen der Sprachleistung einen bestimmten Schwellenwert nicht vernünftig überschreiten kann.
Einige Regeln:
Sie können jedes druckbare ASCII (32-127) als Zeichen für Ihr Quadrat verwenden. Ihre Auswahl muss konstant sein (Sie sollten für jede Iteration dasselbe Zeichen verwenden).
Das Ausgangsquadrat muss die Seitenlänge 1 haben .
Ein Ascii-Art-Quadrat ist eine Zeichenfolge mit N Zeilen (getrennt durch N-1 Zeilenvorschübe / Zeilenumbrüche), wobei jede Zeile N Kopien des ausgewählten Zeichens enthält.
Ihre Ausgabe darf keine überflüssigen Leerzeichen enthalten, außer einem nachgestellten Zeilenumbruch.
Sie können die Standardeinstellungen für die Ein- und Ausgabe verwenden (Programme oder Funktionen sind zulässig, Snippets jedoch nicht).
Die Mitte Ihres Codes ist definiert als der Punkt, an dem der Quellcode in zwei Teile geteilt werden kann, sodass beide gleich sind.
Ihre Antworten werden nach der Länge Ihres ursprünglichen Programms in Byte bewertet. Die niedrigste Byteanzahl gewinnt. Bei Stimmengleichheit gewinnt die zuvor übermittelte Antwort.
Mit diesem Programm können Sie die Einfügungen anwenden, ohne dies von Hand tun zu müssen.