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 > <programm...@jsoftware.com> 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