時々、コードに定数行列のリストがあります:
[ [[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より大きい行列を追加するたびに深くなります)。ただし、この新しいリストから行列の初期リストを再構築することはまだ可能です。
将来この構文を使用できるように、水平配置で記述された配列を、それらが表す行列のリストに変換するコードを記述する必要があります。
回答がソースコードのレイアウトで2Dパターンマッチングを実行しないように、入力は単なる配列オブジェクトとして、または文字列表現を使用する場合は、どのように空白を含まないかを指定します。リテラルはコードで書かれています。したがって、次のような入力が得られます。
[[[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]]]
これは、2つの部分からなるチャレンジの最初で簡単な部分です。これでは、すべての行列が正方形であり、同じ次元を持ち、適切に並べられていると仮定できます。2番目の部分では、これらの仮定を緩和します。
ルール
入力はネストされたリストまたはその正規の文字列表現(選択した言語で)であり、同じ形式で結果を出力する必要があります。結果には常に少なくとも1つのマトリックスが含まれ、マトリックスは1x1程度に小さくなります。行列には、絶対値が128未満の(符号付き)整数のみが含まれます。
プログラムまたは関数を作成し、入力を受け取って出力を提供する標準的な方法を使用できます。
任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。
これはcode-golfであるため、バイト単位で測定された最短の有効な回答が勝ちます。
テストケース
各テストケースには、a)コード内にあるように互いに隣り合って配置されたリストマトリックス(これは入力ではありません)、b)余分な空白のない書式なしリスト(これは入力です)、c)期待される出力。
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}, ...
追加情報が得られます。