Manchmal habe ich Listen mit konstanten Matrizen in meinem Code:
[ [[1, 0],
[0, 1]],
[[1, 0],
[0,-1]],
[[0, 1],
[1, 0]],
[[0,-1],
[1, 0]] ]
Das ist eine schreckliche Nutzung von Bildschirmgrundstücken. Ich würde sie viel lieber nebeneinander schreiben:
[ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Sie werden feststellen, dass dies immer noch eine syntaktisch gültige verschachtelte Liste ist, sie nicht mehr rechteckig ist und eine ganz andere Struktur aufweist (insbesondere wird sie mit jedem Hinzufügen einer Matrix größer als 1x1 tiefer). Es ist jedoch weiterhin möglich, die ursprüngliche Liste der Matrizen aus dieser neuen Liste zu rekonstruieren.
Damit ich diese Syntax in Zukunft verwenden kann, müssen Sie Code schreiben, der in horizontaler Anordnung geschriebene Arrays in die Liste der Matrizen konvertiert, die sie darstellen.
Um sicherzustellen, dass Antworten keinen 2D-Musterabgleich für das Layout im Quellcode durchführen, wird die Eingabe entweder nur als Array-Objekt angegeben, oder wenn Sie eine Zeichenfolgendarstellung verwenden, enthält sie kein Leerzeichen, das angibt, wie das Literal wurde in den Code geschrieben. Sie würden also eine Eingabe wie diese erhalten:
[[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]]]
Die Ausgabe sollte das folgende Array oder seine Zeichenfolgendarstellung sein (wiederum ist kein weiteres Layout erforderlich):
[[[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]]]
Dies ist der erste und einfachere Teil einer zweiteiligen Herausforderung. In diesem Fall können Sie davon ausgehen, dass alle Matrizen quadratisch sind, die gleichen Abmessungen haben und ordnungsgemäß nebeneinander ausgerichtet sind. Im zweiten Teil werden wir diese Annahmen lockern.
Regeln
Die Eingabe ist eine verschachtelte Liste oder deren kanonische Zeichenfolgendarstellung (in der Sprache Ihrer Wahl), und Sie sollten das Ergebnis im gleichen Format ausgeben. Das Ergebnis enthält immer mindestens eine Matrix, und die Matrizen können so klein wie 1x1 sein. Die Matrizen enthalten nur (vorzeichenbehaftete) Ganzzahlen mit einem absoluten Wert von weniger als 128.
Sie können ein Programm oder eine Funktion schreiben und eine der Standardmethoden zum Empfangen von Eingaben und zum Bereitstellen von Ausgaben verwenden.
Sie können jede Programmiersprache verwenden , aber beachten Sie, dass diese Lücken standardmäßig verboten sind.
Das ist Code-Golf , also gewinnt die kürzeste gültige Antwort - gemessen in Bytes .
Testfälle
Jeder Testfall enthält a) die Listenmatrizen, die wie im Code angeordnet sind (dies ist nicht Ihre Eingabe), b) die unformatierte Liste ohne das überflüssige Leerzeichen ( dies ist Ihre Eingabe), c) die erwartete Ausgabe.
Pretty: [ [[0]] ]
Input: [[[0]]]
Output: [[[0]]]
Pretty: [ [[-1]], [[0]], [[1]] ]
Input: [[[-1]],[[0]],[[1]]]
Output: [[[-1]],[[0]],[[1]]]
Pretty: [ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Input: [[[1,0],[[1,0],[[0,1],[[0,-1],[0,1]],[0,-1]],[1,0]],[1,0]]]
Output: [[[1,0],[0,1]],[[1,0],[0,-1]],[[0,1],[1,0]],[[0,-1],[1,0]]]
Pretty: [ [[1, 0, 0], [[ 127, 63, 31], [[1, 0, 0], [[0, 0, 0],
[0, 1, 0], [ 15, 0, -15], [0, 0, 1], [0, 0, 0],
[0, 0, 1]], [ -31, -63, -127]], [0, 1, 0]], [0, 0, 0]] ]
Input: [[[1,0,0],[[127,63,31],[[1,0,0],[[0,0,0],[0,1,0],[15,0,-15],[0,0,1],[0,0,0],[0,0,1]],[-31,-63,-127]],[0,1,0]],[0,0,0]]]
Output: [[[1,0,0],[0,1,0],[0,0,1]],[[127,63,31],[15,0,-15],[-31,-63,-127]],[[1,0,0],[0,0,1],[0,1,0]],[[0,0,0],[0,0,0],[0,0,0]]]
[([1, 0], [0, 1]), ([1, 0], [0, -1]), ([0, 1], [1, 0]), ([0, -1], [1, 0])]
die Ausgabe für den dritten Testfall gültig? Es ist gemischte Liste und Tupel.
[([1,0], ([1, 0}, ...
und das würde Ihnen zusätzliche Informationen geben.