Às vezes, tenho listas de matrizes constantes no meu código:
[ [[1, 0],
[0, 1]],
[[1, 0],
[0,-1]],
[[0, 1],
[1, 0]],
[[0,-1],
[1, 0]] ]
Esse é um uso terrível do espaço da tela. Prefiro escrevê-los um ao lado do outro:
[ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Você verá que essa ainda é uma lista aninhada sintaticamente válida, não é mais retangular e tem uma estrutura muito diferente (em particular, fica mais profunda a cada vez que adiciono uma matriz maior que 1x1). No entanto, ainda é possível reconstruir a lista inicial de matrizes dessa nova lista.
Para que eu possa usar essa sintaxe no futuro, preciso que você escreva algum código que converta matrizes que foram gravadas em um arranjo horizontal na lista de matrizes que elas representam.
Para garantir que as respostas não executem a correspondência de padrões 2D no layout do código-fonte, a entrada será fornecida apenas como o objeto da matriz ou, se você fizer uma representação de cadeia, ela não conterá nenhum espaço em branco indicando como o objeto literal foi escrito no código. Então você receberia uma entrada como esta:
[[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]]]
E a saída deve ser a seguinte matriz ou sua representação de cadeia (novamente, nenhum layout adicional é necessário):
[[[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]]]
Esta é a primeira e mais fácil parte de um desafio em duas partes. Nesta, você pode assumir que todas as matrizes são quadradas e têm as mesmas dimensões e que estão alinhadas adequadamente uma à outra. Na segunda parte, relaxaremos essas suposições.
Regras
A entrada será uma lista aninhada ou sua representação de string canônica (no idioma de sua escolha) e você deverá gerar o resultado no mesmo formato. O resultado sempre conterá pelo menos uma matriz e as matrizes podem ser tão pequenas quanto 1x1. As matrizes conterão apenas números inteiros (assinados) com valor absoluto menor que 128.
Você pode escrever um programa ou uma função e usar qualquer um dos métodos padrão de recebimento de entrada e saída.
Você pode usar qualquer linguagem de programação , mas observe que essas brechas são proibidas por padrão.
Isso é código-golfe , então a resposta mais curta e válida - medida em bytes - vence.
Casos de teste
Cada caso de teste possui a) as matrizes da lista dispostas muito próximas umas das outras, como estariam no código (essa não é sua entrada), b) a lista não formatada sem o espaço em branco estranho ( essa é sua entrada), c) a saída esperada.
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])]
saída é válida para o terceiro caso de teste? É lista mista e tupla.
[([1,0], ([1, 0}, ...
e isso forneceria informações adicionais.