On Wednesday, 20 July 2022 at 16:15:33 UTC, Salih Dincer wrote:
On Wednesday, 20 July 2022 at 09:18:29 UTC, anonymouse wrote:
Given an array of arbitrary dimensions, I would like to accomplish three things: 1) verify that it is rectangular (e.g. all elements have the same length, all sub-elements have the same length, etc.)
        2) flatten and return the flattened copy
        3) transpose and return the transposed copy

Yesterday, I published an example of a lesson we developed with Ali. It's same `transpose()` when I add extra `swap()` for you. I hope it works for you.


Hello Salih, thanks for responding. I'm not seeing the transpose function here. What I meant by transpose is, given the following:

```d
auto array = [
   [111, 112, 113, 114],
   [121, 122, 123, 124],
   [131, 132, 133, 134],
   [141, 142, 143, 144]
]
```

after applying transpose(), you'd get back the following in return:

    [
        [111, 121, 131, 141],
        [112, 122, 132, 142],
        [113, 123, 133, 143],
        [114, 124, 134, 144]
    ]

This should scale to arrays of all dimensions, so the row vector (1D array):

    [100, 200, 300, 4000]

would transpose to:

    [[100],
     [200],
     [300],
     [400]]

In general, the transpose of any array yields an array with its shape reversed. For example, the following array of shape [2, 4, 5]:

```d
auto array = [[
   [111, 112, 113, 114, 115],
   [121, 122, 123, 124, 125],
   [131, 132, 133, 134, 135],
   [141, 142, 143, 144, 145]
], [
   [211, 212, 213, 214, 125],
   [221, 222, 223, 224, 225],
   [231, 232, 233, 234, 235],
   [241, 242, 243, 244, 245]
]]
```

would become this array of shape [5, 4, 2] after transpose, with its columns becoming its rows and its rows becoming its columns:

```d
[[[111, 211],
  [121, 221],
  [131, 231],
  [141, 241]],
 [[112, 212],
  [122, 222],
  [132, 232],
  [142, 242]],
 [[113, 213],
  [123, 223],
  [133, 233],
  [143, 243]],
 [[114, 214],
  [124, 224],
  [134, 234],
  [144, 244]],
 [[115, 215],
  [125, 225],
  [135, 235],
  [145, 245]]]
```

Thanks,
--anonymouse

Reply via email to