Für diese Herausforderung sollten Sie ein Programm oder eine Funktion schreiben, die die Diagonalen einer gegebenen Quadratmatrix ausgibt. Wenn Sie jedoch die Zeilen und Spalten des Quellcodes Ihrer Lösung transponieren, sollte dies stattdessen ein Programm oder eine Funktion sein, die die Antidiagonalen der Matrix zurückgibt. Lesen Sie weiter für Details ...
Regeln
- Der Quellcode Ihrer Lösung wird als 2D-Zeichenraster betrachtet, das durch einen Standard-Zeilenumbruch Ihrer Wahl (Zeilenvorschub, Wagenrücklauf oder eine Kombination aus beiden) getrennt ist.
Keine Zeile in Ihrem Quellcode darf länger als die vorherige sein. Hier einige Beispiele für gültige Layouts:
### ### ###
######## ####### ### ### #
Und hier ist ein Beispiel für ein ungültiges Layout (da die dritte Zeile länger als die zweite ist):
###### #### ##### ###
Ihre beiden Lösungen sollten sich gegenseitig transponieren, dh Sie sollten sich durch Vertauschen von Zeilen und Spalten voneinander lösen. Hier sind zwei gültige Paare:
abc def ghi
adg beh cfi
Und
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
Beachten Sie, dass Leerzeichen wie alle anderen Zeichen behandelt werden. Insbesondere sind nachgestellte Leerzeichen von Bedeutung, da sie möglicherweise keine nachgestellten Leerzeichen in der Transponierung sind.
Jede Lösung sollte ein Programm oder eine Funktion sein, die eine nicht leere quadratische Matrix aus einstelligen ganzen Zahlen als Eingabe verwendet. Eine Lösung sollte eine Liste aller Diagonalen der Matrix und die andere eine Liste aller Antidiagonalen ausgeben. Sie können alle sinnvollen, eindeutigen Eingabe- und Ausgabeformate verwenden, diese müssen jedoch für beide Lösungen identisch sein (dies bedeutet auch, dass es sich entweder um beide Funktionen oder um beide Programme handeln muss).
- Jede Diagonale verläuft von links oben nach rechts unten und sollte von oben nach unten angeordnet werden.
- Jede Antidiagonale verläuft von links unten nach rechts oben und sollte von oben nach unten angeordnet werden.
Wertung
Um Lösungen zu fördern, die so quadratisch wie möglich sind, ist die primäre Punktzahl die Anzahl der Zeilen oder Spalten Ihrer Lösung, je nachdem, welcher Wert größer ist . Weniger ist besser. Die Krawatten werden durch die Anzahl der Zeichen in der Lösung getrennt, wobei die Zeilenumbrüche nicht berücksichtigt werden. Auch hier ist weniger besser. Beispiel:
abcd
efg
h
Dies und seine Transponierung hätten eine primäre Punktzahl von 4 (da es 4 Spalten gibt) und eine bahnbrechende Punktzahl von 8 (da es 8 Zeichen ohne Zeilenumbruch gibt). Bitte geben Sie beide Werte in der Kopfzeile Ihrer Antwort an.
Testfälle
Die eigentliche Aufgabe, die von den beiden Lösungen ausgeführt wird, sollte hier nicht die primäre Herausforderung sein. Hier sind zwei Beispiele, die Ihnen beim Testen Ihrer Lösungen helfen:
Input:
1 2 3
4 5 6
7 8 9
Diagonals:
3
2 6
1 5 9
4 8
7
Antidiagonals:
1
4 2
7 5 3
8 6
9
Input:
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Diagonals:
0
1 1
0 0 0
1 1 1 1
0 0 0
1 1
0
Antidiagonals:
1
0 0
1 1 1
0 0 0 0
1 1 1
0 0
1