A volte, ho elenchi di matrici costanti nel mio codice:
[ [[1, 0],
[0, 1]],
[[1, 0],
[0,-1]],
[[0, 1],
[1, 0]],
[[0,-1],
[1, 0]] ]
È un uso terribile del settore immobiliare dello schermo. Preferirei scriverli uno di fianco all'altro:
[ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Scoprirai che questo è ancora un elenco nidificato sintatticamente valido, non è più rettangolare e ha una struttura molto diversa (in particolare, diventa più profondo ogni volta che aggiungo una matrice più grande di 1x1). Tuttavia, è ancora possibile ricostruire l'elenco iniziale di matrici da questo nuovo elenco.
Per poter utilizzare questa sintassi in futuro, ho bisogno che tu scriva del codice che converte le matrici che sono state scritte in una disposizione orizzontale nell'elenco delle matrici che rappresentano.
Per assicurarsi che le risposte non eseguano la corrispondenza del modello 2D sul layout nel codice sorgente, l'input verrà fornito come solo oggetto array o se si prende una rappresentazione di stringa, quindi non conterrà alcuno spazio che indichi come letterale è stato scritto nel codice. Quindi otterrai alcuni input come questo:
[[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]]]
E l'output dovrebbe essere il seguente array o la sua rappresentazione in formato stringa (di nuovo, non sono necessari ulteriori layout):
[[[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]]]
Questa è la prima e più semplice parte di una sfida in due parti. In questo caso, puoi presumere che tutte le matrici siano quadrate e abbiano le stesse dimensioni e che siano allineate correttamente l'una accanto all'altra. Nella seconda parte rilasseremo questi presupposti.
Regole
L'input sarà un elenco nidificato o la sua rappresentazione di stringa canonica (nella tua lingua preferita) e dovresti produrre il risultato nello stesso formato. Il risultato conterrà sempre almeno una matrice e le matrici possono essere piccole come 1x1. Le matrici conterranno solo numeri interi (firmati) con valore assoluto inferiore a 128.
È possibile scrivere un programma o una funzione e utilizzare uno dei metodi standard per ricevere input e fornire output.
È possibile utilizzare qualsiasi linguaggio di programmazione , ma si noti che queste scappatoie sono vietate per impostazione predefinita.
Questo è code-golf , quindi la risposta valida più breve - misurata in byte - vince.
Casi test
Ogni caso di test ha a) le matrici dell'elenco disposte una accanto all'altra come sarebbero nel codice (questo non è il tuo input), b) l'elenco non formattato senza lo spazio bianco estraneo ( questo è il tuo input), c) il uscita prevista.
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])]
output è valido per il terzo testcase? È un elenco misto e tupla.
[([1,0], ([1, 0}, ...
e ciò ti darebbe ulteriori informazioni.