Es gab einige Herausforderungen, die das Verdoppeln des Quellcodes betrafen: hier und hier . Die Aufgabe, die wir hier haben, ist etwas schwieriger, sollte aber in fast jeder Sprache machbar sein.
In dieser Herausforderung nehmen Sie eine beliebige positive ganze Zahl auf. Ihr Programm muss diese ganze Zahl doppelt ausgeben . Wenn Ihr Quellcode verdoppelt wird, nimmt er eine positive Ganzzahl auf und gibt sie im Quadrat aus .
Wie wird Ihr Quellcode verdoppelt? Nun, Sie können es nach Ihren Wünschen haben . Das heißt, können Sie Ihren Quellcode aufgeteilt in Strings von Bytes oder Zeichen (oder Token in Zeichen übersetzten langs) von jeder gleich lang Sie wollen , und wiederholen Sie die einzelnen Blöcke zweimal hintereinander.
Für ein erstes Programm von ABCDEFGHIJKL
(Länge 12) sind hier alle möglichen Doppelprogramme:
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
Beachten Sie, dass dies bedeutet, dass Programme mit Primlängen nur auf zwei Arten verdoppelt werden können: jedes Zeichen wird verdoppelt oder das vollständige Programm wird zweimal wiederholt.
Regeln:
- Code muss ein vollständiges Programm oder eine vollständige Funktion sein.
- Standardlücken sind verboten.
- Standard-E / A-Methoden sind zulässig.
- Alle Zeichen / Bytes, einschließlich Leerzeichen und Zeilenumbrüchen, werden in der Länge des Codes gezählt und tragen zu Chunks bei.
- Sie können davon ausgehen, dass die Eingabe und das Quadrat durch den Int / Integer-Typ Ihrer Sprache dargestellt werden können.
- Sie dürfen keinen abschließenden Zeilenvorschub oder ein anderes Zeichen annehmen.
- Geben Sie Ihre Blockgröße in der Überschrift nach der Byteanzahl an.
- Das ist Code-Golf , also sind kürzere Programme besser! Wenn zwei Programme die gleiche Länge haben, gewinnt das Programm, das die kleinere Blocklänge verwendet. (Wenn Sie ein längeres Programm haben, das eine kleinere Blocklänge verwendet, lohnt sich auch das Posten!)
- Wenn für Ihr Programm eine zweite Eingabe / Zeile erforderlich ist, können Sie keine Annahmen zu deren Wert treffen. Insbesondere sollte Ihr Programm funktionieren, wenn die zweite Eingabe leer, dieselbe wie die erste oder eine andere Ganzzahl ist. Wenn Ihr Programm keine zweite Eingabe / Zeile benötigt, können Sie diese Einschränkung ignorieren.
5 -> 10
:; Doppelcode 5 -> 25 25
.
.0
am Ende)?