See dyadic rotate (https://code.jsoftware.com/wiki/Vocabulary/bardot#dyadic)
APL had rotate on either first or last axis, and J has rotate that can be
‘adapted’ to do what you want using rank:
]s1=.4 4${(4#'ABCD'),.(-.&' ')":4#1234
┌──┬──┬──┬──┐
│A1│A2│A3│A4│
├──┼──┼──┼──┤
│B1│B2│B3│B4│
├──┼──┼──┼──┤
│C1│C2│C3│C4│
├──┼──┼──┼──┤
│D1│D2│D3│D4│
└──┴──┴──┴──┘
0 1 2 3 |."0 1 s1 NB. Rotate Item 1 by 0, Item 2 by 1
(left), Item 3 by 2 (left), Item 4 by 3 (left)
┌──┬──┬──┬──┐
│A1│A2│A3│A4│
├──┼──┼──┼──┤
│B2│B3│B4│B1│
├──┼──┼──┼──┤
│C3│C4│C1│C2│
├──┼──┼──┼──┤
│D4│D1│D2│D3│
└──┴──┴──┴──┘
0 1 2 3 |."0 1&.|: s1 NB. This same as above but uses &. (And
it’s inverse) to transpose the matrix before and after the rotate, so that the
same operation now works column wise
┌──┬──┬──┬──┐
│A1│B2│C3│D4│
├──┼──┼──┼──┤
│B1│C2│D3│A4│
├──┼──┼──┼──┤
│C1│D2│A3│B4│
├──┼──┼──┼──┤
│D1│A2│B3│C4│
└──┴──┴──┴──┘
Is this what you are after Skip ? HTH, Rob
> On 12 Jun 2023, at 5:34 pm, 'Skip Cave' via Programming
> <[email protected]> wrote:
>
> I can generate a 4x4 square with unique identifiers in each square:
>
> ]s1=.4 4${(4#'ABCD'),.(-.&' ')":4#1234
>
> ┌──┬──┬──┬──┐
>
> │A1│A2│A3│A4│
>
> ├──┼──┼──┼──┤
>
> │B1│B2│B3│B4│
>
> ├──┼──┼──┼──┤
>
> │C1│C2│C3│C4│
>
> ├──┼──┼──┼──┤
>
> │D1│D2│D3│D4│
>
> └──┴──┴──┴──┘
>
> How can I rotate each row a different amount?
>
> I want to rotate row zero 0 cells left, row 1 one cell left, row 2 two
> cells left, & row three 3 cells left?
>
>
> How to do the same for columns?
>
> Skip Cave
> Cave Consulting LLC
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm