The acid test is to find all the rotational duplicates of a full odometer
sequence:
*odo=:#:i.@(*/)* NB. Odometer verb
* $n=.odo 3#5 *
*125 3*
*rd=:3 :'(y i."_1 <./"1 y)|."_1 y'* NB. Roger's rotational duplication verb
*$rdn=.rd n* NB. Return all rows to key form.
*125 3*
* $rdn1=.~. rdn* NB. Remove all duplicate keys.
*55 3*
* 5 11${rdn1*
*┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐*
*│0 0 0│0 0 1│0 0 2│0 0 3│0 0 4│0 1 0│0 1 1│0 1 2│0 1 3│0 1 4│0 2 0│*
*├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤*
*│0 2 1│0 2 2│0 2 3│0 2 4│0 3 0│0 3 1│0 3 2│0 3 3│0 3 4│0 4 0│0 4 1│*
*├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤*
*│0 4 2│0 4 3│0 4 4│1 1 1│1 1 2│1 1 3│1 1 4│1 2 1│1 2 2│1 2 3│1 2 4│*
*├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤*
*│1 3 1│1 3 2│1 3 3│1 3 4│1 4 1│1 4 2│1 4 3│1 4 4│2 2 2│2 2 3│2 2 4│*
*├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤*
*│2 3 2│2 3 3│2 3 4│2 4 2│2 4 3│2 4 4│3 3 3│3 3 4│3 4 3│3 4 4│4 4 4│*
*└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘*
We can see that some rotational dups were missed - 001-010, 002-020, etc.
112-121, 113-131, etc.
So there is still some work to do on Roger's rb verb.
Skip
On Sat, May 16, 2020 at 8:21 PM Roger Hui <[email protected]> wrote:
> > I could be wrong.
>
> Right. I was wrong.
>
>
> On Sat, May 16, 2020 at 6:18 PM Raul Miller <[email protected]> wrote:
>
> > For example:
> >
> > A=: 2 3 1 2 1,: 2 1 2 3 1
> > 2 1 |.("_1) A
> > 1 2 1 2 3
> > 1 2 3 1 2
> > 2 4 |.("_1) A
> > 1 2 1 2 3
> > 1 2 1 2 3
> >
> > Thanks,
> >
> > --
> > Raul
> >
> > On Sat, May 16, 2020 at 9:11 PM Roger Hui <[email protected]>
> > wrote:
> > >
> > > The question is, do you get a unique key (signature) if you rotate a
> row
> > so
> > > that the first occurrence of the minimum value is first? I thought the
> > > answer was yes after thinking about it for a minute. I could be wrong.
> > >
> > >
> > > On Sat, May 16, 2020 at 5:53 PM Raul Miller <[email protected]>
> > wrote:
> > >
> > > > A critical question here is whether the minimum value can appear more
> > > > than once in each row, or whether the examples (where each value is
> > > > has a unique appearance in each row) are adequately complex.
> > > >
> > > > Thanks,
> > > >
> > > > --
> > > > Raul
> > > >
> > > > On Sat, May 16, 2020 at 8:15 PM Roger Hui <[email protected]
> >
> > > > wrote:
> > > > >
> > > > > Hmm, you just want the keys: rotate each row so that the minimum
> > item is
> > > > > first.
> > > > >
> > > > > (n i."_1 <./"1 n)|."_1 n
> > > > > 1 3 2 4
> > > > > 1 2 3 4
> > > > > 1 2 3 4
> > > > > 1 3 2 4
> > > > > 1 3 2 4
> > > > > 1 2 3 4
> > > > > 1 2 3 4
> > > > > 1 3 2 4
> > > > >
> > > > >
> > > > > On Sat, May 16, 2020 at 5:11 PM Roger Hui <
> [email protected]
> > >
> > > > wrote:
> > > > >
> > > > > > ((n i."_1 <./"1 n)|."_1 n) </. n
> > > > > > ┌───────┬───────┐
> > > > > > │2 4 1 3│2 3 4 1│
> > > > > > │3 2 4 1│3 4 1 2│
> > > > > > │1 3 2 4│4 1 2 3│
> > > > > > │4 1 3 2│1 2 3 4│
> > > > > > └───────┴───────┘
> > > > > >
> > > > > > Rotate each row so that the minimum item is first, then use those
> > > > rotated
> > > > > > rows as keys.
> > > > > >
> > > > > >
> > > > > > On Sat, May 16, 2020 at 4:44 PM Skip Cave <
> [email protected]
> > >
> > > > wrote:
> > > > > >
> > > > > >> I have run across this issue a few times in the past.
> > > > > >> The following 8x4 array has several rows that are 'rotational
> > > > duplicates'.
> > > > > >>
> > > > > >> ]n=.8 4$2 4 1 3 2 3 4 1 3 4 1 2 3 2 4 1 1 3 2 4 4 1 2 3 1 2 3 4
> 4
> > 1 3
> > > > 2
> > > > > >>
> > > > > >> 2 4 1 3
> > > > > >>
> > > > > >> 2 3 4 1
> > > > > >>
> > > > > >> 3 4 1 2
> > > > > >>
> > > > > >> 3 2 4 1
> > > > > >>
> > > > > >> 1 3 2 4
> > > > > >>
> > > > > >> 4 1 2 3
> > > > > >>
> > > > > >> 1 2 3 4
> > > > > >>
> > > > > >> 4 1 3 2
> > > > > >>
> > > > > >>
> > > > > >> Is it possible to develop a verb that would find the rows that
> are
> > > > > >> rotational duplicates of each other. That is, find all the rows
> > that
> > > > would
> > > > > >> be the same, if each row was rotated some integer value in the
> > first
> > > > > >> dimension. The output of the verb would be the same shape array,
> > but
> > > > with
> > > > > >> each duplicate row rotated such that they show as identical.
> > Picking
> > > > the
> > > > > >> 'standard' rotation for a set of rotational duplicates is up to
> > the
> > > > > >> implementer.
> > > > > >>
> > > > > >>
> > > > > >> Skip
> > > > > >>
> > ----------------------------------------------------------------------
> > > > > >> For information about J forums see
> > > > http://www.jsoftware.com/forums.htm
> > > > > >>
> > > > > >
> > > > >
> > ----------------------------------------------------------------------
> > > > > For information about J forums see
> > http://www.jsoftware.com/forums.htm
> > > >
> ----------------------------------------------------------------------
> > > > For information about J forums see
> http://www.jsoftware.com/forums.htm
> > > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm