Betrachten Sie einen quadratischen Textblock mit einer Breite von N Zeichen und einer Höhe von N für eine ungerade Ganzzahl N, die größer als 1 ist.
Als Beispiel sei N = 5 und der Text:
MLKJI
NWVUH
OXYTG
PQRSF
ABCDE
Beachten Sie, dass dies das Alphabet (neben Z) ist, das von der unteren linken Ecke aus gegen den Uhrzeigersinn gedreht wurde. Es ist wie ein aufgerollter Teppich.
"Abrollen" des Textes um eine Vierteldrehung im Uhrzeigersinn, also FGHI
auf der gleichen Ebene wie das ABCDE
Ergebnis:
PONM
QXWL
RYVK
STUJ
ABCDEFGHI
Dieses Abrollen kann noch sieben Mal durchgeführt werden, bis der Text eine einzige Zeile ist:
SRQP
TYXO
UVWN
ABCDEFGHIJKLM
UTS
VYR
WXQ
ABCDEFGHIJKLMNOP
WVU
XYT
ABCDEFGHIJKLMNOPQRS
XW
YV
ABCDEFGHIJKLMNOPQRSTU
YX
ABCDEFGHIJKLMNOPQRSTUVW
Y
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
Herausforderung
Die Herausforderung besteht darin, ein Programm zu schreiben, das ein N × N-Textblock ist, der die Häufigkeit ausgibt, mit der er um eine viertel Umdrehung "abgewickelt" wurde, wenn er in die Abwicklungsmuster umgeordnet und ausgeführt wird.
Hier gibt es wirklich zwei Wettbewerbe: (Hoffentlich wird es nicht zu chaotisch)
- Tun Sie dies mit dem kleinsten N. (bis zu einer Grenze von N = 3)
- Tun Sie dies mit dem größten N. (keine Begrenzung)
Es wird keine akzeptierte Antwort geben, aber der Gewinner in jeder dieser Kategorien erhält mindestens 50 Kopfgeldreplikationen von mir. Bei Gleichstand gewinnt die älteste Antwort.
Beispiel
Wenn Ihr Codeblock ist
MyP
rog
ram
Läuft es so, wie es ist, sollte es 0 ausgeben.
Laufen
rM
oy
ramgP
sollte 1 ausgeben.
Laufen
or
ramgPyM
sollte 2 ausgeben.
Laufen
o
ramgPyMr
sollte 3 ausgeben.
Zum Schluss sollte running ramgPyMro
4 ausgeben.
Einzelheiten
- Die Ausgabe sollte von selbst auf stdout (oder die nächstgelegene Alternative) gedruckt werden. Es erfolgt keine Eingabe.
- Sie dürfen in Ihrem Code nur druckbare ASCII-Zeichen (Hex-Codes 20 bis 7E, einschließlich Leerzeichen) verwenden.
- Leerzeichen füllen den leeren Raum in den Abrollvorrichtungen. (Es sei denn, Sie rollen nach links ab.)
- Nur die Anordnungen von vollständig quadratisch bis vollständig flach müssen eine gültige Ausgabe haben. Es werden keine anderen Vereinbarungen getroffen.
- Sie können Ihre eigene Quelle nicht lesen.
- Sie können Kommentare verwenden.
- N = 1 ist ausgeschlossen, da das Programm in vielen Sprachen
0
funktionieren würde. Falls gewünscht, können Sie sich eher nach links als nach rechts abrollen. Also zB
MyP rog ram
wird
Pg yo Mrram
und so weiter. Beim Rollen auf diese Weise werden keine zusätzlichen Leerzeichen hinzugefügt. Die Zeilen enden einfach
(Siehe auch: Schreiben eines rechteckigen Programms, das ausgibt, wie oft gedreht wurde. )