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

В основном это склеивает столбцы по строкам вместе, а затем склеивает ряды по ряду - и, наконец, раскрывает полученный мат.

Другие вопросы по тегам