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

Reply via email to