My understanding is that Grey codes encode numbers in such a way that the
binary representation of consecutive numbers (including the last and first
couple) in the sequence can be produced, one from the other, by flipping
only one bit.
For example, the binary representation of a four bit Grey sequence, of 2^4
numbers, and the flipping bit to produce the next number follows,
o=. @:
( Grey=. (xor f. <. o -:) o i. o (2&^)) ( xor=. 22 b. )
(22 b. <.@:-:)@:i.@:(2&^) 22 b.
(#: ; (2 #: o (xor/\) ]) o (, {.)) o Grey 4
┌───────┬───────┐
│0 0 0 0│0 0 0 1│
│0 0 0 1│0 0 1 0│
│0 0 1 1│0 0 0 1│
│0 0 1 0│0 1 0 0│
│0 1 1 0│0 0 0 1│
│0 1 1 1│0 0 1 0│
│0 1 0 1│0 0 0 1│
│0 1 0 0│1 0 0 0│
│1 1 0 0│0 0 0 1│
│1 1 0 1│0 0 1 0│
│1 1 1 1│0 0 0 1│
│1 1 1 0│0 1 0 0│
│1 0 1 0│0 0 0 1│
│1 0 1 1│0 0 1 0│
│1 0 0 1│0 0 0 1│
│1 0 0 0│1 0 0 0│
└───────┴───────┘
However, flipping as many as three bits are sometimes required for the
referred sequence,
T=. 0 8 12 14 15 13 10 11 9 4 6 7 5 2 3 1
(#: ; (2 #: o (xor/\) ]) o (, {.)) T
┌───────┬───────┐
│0 0 0 0│1 0 0 0│
│1 0 0 0│0 1 0 0│
│1 1 0 0│0 0 1 0│
│1 1 1 0│0 0 0 1│
│1 1 1 1│0 0 1 0│
│1 1 0 1│0 1 1 1│
│1 0 1 0│0 0 0 1│
│1 0 1 1│0 0 1 0│
│1 0 0 1│1 1 0 1│
│0 1 0 0│0 0 1 0│
│0 1 1 0│0 0 0 1│
│0 1 1 1│0 0 1 0│
│0 1 0 1│0 1 1 1│
│0 0 1 0│0 0 0 1│
│0 0 1 1│0 0 1 0│
│0 0 0 1│0 0 0 1│
└───────┴───────┘
Am I missing something?
On Fri, Nov 15, 2013 at 2:07 PM, R.E. Boss <[email protected]> wrote:
> Actually, it IS a (4D binary reflected) Gray code.
>
>
> R.E. Boss
>
> (Add your info to http://www.jsoftware.com/jwiki/Community/Demographics )
>
>
> > -----Original Message-----
> > From: [email protected] [mailto:programming-
> > [email protected]] On Behalf Of Devon McCormick
> > Sent: vrijdag 15 november 2013 19:33
> > To: J-programming forum
> > Subject: Re: [Jprogramming] Sets
> >
> > These look like Gray codes.
> >
> > On Nov 14, 2013 10:04 PM, "Raul Miller" <[email protected]> wrote:
> > >
> > > Easy enough to add.
> > >
> > > It's an interesting progression though:
> > >
> > > #:/:&> (<@#~ 2 #:@i.@^ #)&.> set 2;'b';1;'a'
> > > 0 0 0 0
> > > 1 0 0 0
> > > 1 1 0 0
> > > 1 1 1 0
> > > 1 1 1 1
> > > 1 1 0 1
> > > 1 0 1 0
> > > 1 0 1 1
> > > 1 0 0 1
> > > 0 1 0 0
> > > 0 1 1 0
> > > 0 1 1 1
> > > 0 1 0 1
> > > 0 0 1 0
> > > 0 0 1 1
> > > 0 0 0 1
> > >
> > > --
> > > Raul
> > >
> > > On Thu, Nov 14, 2013 at 6:06 PM, km <[email protected]> wrote:
> > > > Cool; needs a sort. --Kip
> > > >
> > > >
> > > > psr=: (<@#~ 2 #:@i.@^ #)&.> NB. Raul's
> > > > psr set 0;1
> > > > +----------------+
> > > > |++---+---+-----+|
> > > > |||+-+|+-+|+-+-+||
> > > > ||||1|||0|||0|1|||
> > > > |||+-+|+-+|+-+-+||
> > > > |++---+---+-----+|
> > > > +----------------+
> > > > ps set 0;1 NB. list inside box is sorted
> > > > +----------------+
> > > > |++---+-----+---+|
> > > > |||+-+|+-+-+|+-+||
> > > > ||||0|||0|1|||1|||
> > > > |||+-+|+-+-+|+-+||
> > > > |++---+-----+---+|
> > > > +----------------+
> > > >
> > > > Sent from my iPad
> > > >
> > > >> On Nov 14, 2013, at 3:17 PM, Raul Miller <[email protected]>
> > wrote:
> > > >>
> > > >> Derived from ps at http://rosettacode.org/wiki/Power_set#J
> > > >>
> > > >> ps=: (<@#~ 2 #:@i.@^ #)&.>
> > > >>
> > > >> --
> > > >> Raul
> > > >>
> > > >>
> > > >>> On Thu, Nov 14, 2013 at 3:17 PM, km <[email protected]> wrote:
> > > >>> Here is my latest attempt at sets in J. Would anyone care to write
> a
> > verb ps (power set) such that ps y is the set of all subsets of set y?
> > It's called the power set in part because when a set has n elements its
> > power set has 2^n elements. --Kip Murray
> > > >>>
> > > >>> NB. A set is a box with a sorted list of boxes inside.
> > > >>> NB. An element is the contents of a box in the list.
> > > >>> NB. A -: B tests whether set A is set B.
> > > >>>
> > > >>> set =: [: < [: /:~ ~. NB. create set from list of boxes
> > > >>>
> > > >>> NB. The list may have duplicates but the set has none.
> > > >>>
> > > >>> EE =: <$0 NB. empty set, same as Ace a:
> > > >>>
> > > >>> eo =: <@[ e. >@] NB. test whether x is an element of y
> > > >>>
> > > >>> uu =: [: set ,&> NB. union
> > > >>>
> > > >>> mm =: [: < -.&> NB. minus
> > > >>>
> > > >>> sd =: mm uu mm~ NB. symmetric difference
> > > >>>
> > > >>> cp =: uu mm sd NB. common part (intersection)
> > > >>>
> > > >>> ss =: uu -: ] NB. test whether x is a subset of y
> > > >>>
> > > >>> (set 1;2;3;3) -: set 3;1;2
> > > >>> 1
> > > >>>
> > > >>> ]A =: set 2;'b';1;'a'
> > > >>> +---------+
> > > >>> |+-+-+-+-+|
> > > >>> ||1|2|a|b||
> > > >>> |+-+-+-+-+|
> > > >>> +---------+
> > > >>>
> > > >>> ]B =: set 'b';'a';4;3;'a'
> > > >>> +---------+
> > > >>> |+-+-+-+-+|
> > > >>> ||3|4|a|b||
> > > >>> |+-+-+-+-+|
> > > >>> +---------+
> > > >>>
> > > >>> A uu B
> > > >>> +-------------+
> > > >>> |+-+-+-+-+-+-+|
> > > >>> ||1|2|3|4|a|b||
> > > >>> |+-+-+-+-+-+-+|
> > > >>> +-------------+
> > > >>>
> > > >>> A sd B
> > > >>> +---------+
> > > >>> |+-+-+-+-+|
> > > >>> ||1|2|3|4||
> > > >>> |+-+-+-+-+|
> > > >>> +---------+
> > > >>>
> > > >>> A cp B
> > > >>> +-----+
> > > >>> |+-+-+|
> > > >>> ||a|b||
> > > >>> |+-+-+|
> > > >>> +-----+
> > > >>>
> > > >>> NB. Below is the set of all subsets of set 0;1
> > > >>>
> > > >>> set EE;(set <0);(set <1);<set 0;1
> > > >>> +------------------------+
> > > >>> |+--+-----+-------+-----+|
> > > >>> ||++|+---+|+-----+|+---+||
> > > >>> ||||||+-+|||+-+-+|||+-+|||
> > > >>> ||++|||0|||||0|1|||||1||||
> > > >>> || ||+-+|||+-+-+|||+-+|||
> > > >>> || |+---+|+-----+|+---+||
> > > >>> |+--+-----+-------+-----+|
> > > >>> +------------------------+
> > > >>>
> > > >>> Sent from my iPad
> > > >>>
> ----------------------------------------------------------------------
> > > >>> 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