Иногда в моем коде есть списки постоянных матриц:
[ [[1, 0],
[0, 1]],
[[1, 0],
[0,-1]],
[[0, 1],
[1, 0]],
[[0,-1],
[1, 0]] ]
Это ужасное использование экрана недвижимости. Я бы предпочел написать их рядом друг с другом:
[ [[1, 0], [[1, 0], [[0, 1], [[0,-1],
[0, 1]], [0,-1]], [1, 0]], [1, 0]] ]
Вы обнаружите, что это все еще синтаксически верный вложенный список, он просто больше не прямоугольный и имеет совершенно иную структуру (в частности, он становится глубже каждый раз, когда я добавляю матрицу больше 1x1). Тем не менее, все еще возможно восстановить исходный список матриц из этого нового списка.
Чтобы я мог использовать этот синтаксис в будущем, мне нужно, чтобы вы написали некоторый код, который преобразует массивы, которые были написаны в горизонтальном расположении, в список матриц, которые они представляют.
Чтобы убедиться, что ответы не выполняют сопоставление двумерного шаблона с макетом в исходном коде, входные данные будут заданы либо просто как объект массива, либо, если вы возьмете строковое представление, то оно не будет содержать пробелов, указывающих, как литерал был написан в коде. Таким образом, вы получите некоторый вклад, как это:
[[[1, 0], [[1, 0], [[0, 1], [[0,-1], [0, 1]], [0,-1]], [1, 0]], [1, 0]]]
И на выходе должен быть следующий массив или его строковое представление (опять же, никакой дальнейшей разметки не требуется):
[[[1, 0], [0, 1]], [[1, 0], [0,-1]], [[0, 1], [1, 0]], [[0,-1], [1, 0]]]
Это первая и более простая часть задачи, состоящей из двух частей. В этом вы можете предположить, что все матрицы квадратные и имеют одинаковые размеры, и что они правильно выровнены рядом друг с другом. Во второй части мы ослабим эти предположения.
правила
Входными данными будет вложенный список или его каноническое строковое представление (на выбранном вами языке), и вы должны вывести результат в том же формате. Результат всегда будет содержать хотя бы одну матрицу, и матрицы могут быть размером 1x1. Матрицы будут содержать только (подписанные) целые числа с абсолютным значением меньше 128.
Вы можете написать программу или функцию и использовать любой из стандартных методов получения ввода и предоставления вывода.
Вы можете использовать любой язык программирования , но учтите, что эти лазейки по умолчанию запрещены.
Это код-гольф , поэтому самый короткий действительный ответ - измеренный в байтах - выигрывает.
Тестовые случаи
Каждый тестовый пример имеет: а) матрицы списков, удобно расположенные рядом друг с другом в том виде, в каком они были бы в коде (это не ваш ввод), б) неформатированный список без лишних пробелов ( это ваш ввод), в) ожидаемый результат.
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])]
Допустим вывод для третьего теста? Это смешанный список и кортеж.
[([1,0], ([1, 0}, ...
и это даст вам дополнительную информацию.