APL - убрать вложенность и сохранить форму матрицы
У меня есть матрица 3x3 вложенных матриц 3x3 (которые содержат числа). Как я "вкладываю" все эти матрицы, чтобы я получал матрицу 9x9.
1 ответ
Решение
Предположим, что это наша матрица m:
⎕←m←(3 3⍴⊂3 3⍴⍳9)ר(1 10 100)∘.×1 10 100
┌───────────┬──────────────┬─────────────────┐
│1 2 3 │10 20 30 │100 200 300 │
│4 5 6 │40 50 60 │400 500 600 │
│7 8 9 │70 80 90 │700 800 900 │
├───────────┼──────────────┼─────────────────┤
│10 20 30 │100 200 300 │1000 2000 3000 │
│40 50 60 │400 500 600 │4000 5000 6000 │
│70 80 90 │700 800 900 │7000 8000 9000 │
├───────────┼──────────────┼─────────────────┤
│100 200 300│1000 2000 3000│10000 20000 30000│
│400 500 600│4000 5000 6000│40000 50000 60000│
│700 800 900│7000 8000 9000│70000 80000 90000│
└───────────┴──────────────┴─────────────────┘
Тогда вы можете преобразовать следующим образом:
⊃⍪/,/m
1 2 3 10 20 30 100 200 300
4 5 6 40 50 60 400 500 600
7 8 9 70 80 90 700 800 900
10 20 30 100 200 300 1000 2000 3000
40 50 60 400 500 600 4000 5000 6000
70 80 90 700 800 900 7000 8000 9000
100 200 300 1000 2000 3000 10000 20000 30000
400 500 600 4000 5000 6000 40000 50000 60000
700 800 900 7000 8000 9000 70000 80000 90000
В основном это склеивает столбцы по строкам вместе, а затем склеивает ряды по ряду - и, наконец, раскрывает полученный мат.