[Jprogramming] Sets
Henry Rich
HenryHRich at nc.rr.com
Mon Nov 18 10:33:28 UTC 2013
Or:
gray2 =. [: (~: (_1 |.!.0"1 ])) 2&#.^:_1
gray3 =: #:@(22 b. _1&(33 b.))
Henry Rich
On 11/18/2013 5:10 AM, R.E. Boss wrote:
> Replace gray by
> gray=. [: -. [: (= (_1 |.!.0"1 ])) 2&#.^:_1
> to allow large(r) Gray codes.
>
> See solution 10 on http://www.jsoftware.com/jwiki/Puzzles/Gray%20Code
>
> ('0.4';'c12.0') (8!:2) ts' Gray i.524288' NB. 54288=2^19
> 0.0247 33,556,352
>
> ('0.4';'c12.0') (8!:2) ts' gray i.524288' NB. 54288=2^19
> 0.4365 293,615,616
>
> ('0.4';'c12.0') (8!:2) ts' #:([: ({: (({. * #@]) ,@:+ ($ (,: |.))) ((* #) ,@:+ # $ (,: |.))^:({.`(0: , 1:))) ] (] , 2: ^ (- 2&^)) <.@(2&^.)@<:) 19'
> 0.0182 26,231,168
>
> (gray i.524288)-: #:([: ({: (({. * #@]) ,@:+ ($ (,: |.))) ((* #) ,@:+ # $ (,: |.))^:({.`(0: , 1:))) ] (] , 2: ^ (- 2&^)) <.@(2&^.)@<:) 19
> 1
> (Gray i.524288)-: #:([: ({: (({. * #@]) ,@:+ ($ (,: |.))) ((* #) ,@:+ # $ (,: |.))^:({.`(0: , 1:))) ] (] , 2: ^ (- 2&^)) <.@(2&^.)@<:) 19
> 1
>
>
> R.E. Boss
>
> (Add your info to http://www.jsoftware.com/jwiki/Community/Demographics )
>
>> -----Original Message-----
>> From: programming-bounces at forums.jsoftware.com [mailto:programming-
>> bounces at forums.jsoftware.com] On Behalf Of Jose Mario Quintana
>> Sent: zondag 17 november 2013 22:28
>> To: Programming forum
>> Subject: Re: [Jprogramming] Sets
>>
>> "Grey" and gray are related but they take different arguments and produce
>> different results. However, we can compare Gray (derived from Grey) and
>> gray. Gray is shorter than gray,
>>
>> ( gray=. [: -. [: (= (_1 |.!.0"1 ])) bin f. ) NB. Fixed
>> [: -. [: (= (_1 |.!.0"1 ])) 2 2 2 2&#:
>>
>> ( Gray=. #: @: (22 b. <.@:-:) ) NB. Fixed
>> #:@:(22 b. <.@:-:)
>>
>> Gray and gray produce the same result for the given argument,
>>
>> (Gray -: gray) i.16
>> 1
>>
>> Gray is more efficient than gray,
>>
>> 100 st'gray i.16'
>> ┌────┬─────────────┐
>> │2112│4.55809702e_6│
>> └────┴─────────────┘
>> 100 st'Gray i.16'
>> ┌────┬─────────────┐
>> │1408│3.12123995e_6│
>> └────┴─────────────┘
>>
>> and it is more general,
>>
>> (Gray ; gray) i.32
>> ┌─────────┬───────┐
>> │0 0 0 0 0│0 0 0 0│
>> │0 0 0 0 1│0 0 0 1│
>> │0 0 0 1 1│0 0 1 1│
>> │0 0 0 1 0│0 0 1 0│
>> │0 0 1 1 0│0 1 1 0│
>> │0 0 1 1 1│0 1 1 1│
>> │0 0 1 0 1│0 1 0 1│
>> │0 0 1 0 0│0 1 0 0│
>> │0 1 1 0 0│1 1 0 0│
>> │0 1 1 0 1│1 1 0 1│
>> │0 1 1 1 1│1 1 1 1│
>> │0 1 1 1 0│1 1 1 0│
>> │0 1 0 1 0│1 0 1 0│
>> │0 1 0 1 1│1 0 1 1│
>> │0 1 0 0 1│1 0 0 1│
>> │0 1 0 0 0│1 0 0 0│
>> │1 1 0 0 0│0 0 0 0│
>> │1 1 0 0 1│0 0 0 1│
>> │1 1 0 1 1│0 0 1 1│
>> │1 1 0 1 0│0 0 1 0│
>> │1 1 1 1 0│0 1 1 0│
>> │1 1 1 1 1│0 1 1 1│
>> │1 1 1 0 1│0 1 0 1│
>> │1 1 1 0 0│0 1 0 0│
>> │1 0 1 0 0│1 1 0 0│
>> │1 0 1 0 1│1 1 0 1│
>> │1 0 1 1 1│1 1 1 1│
>> │1 0 1 1 0│1 1 1 0│
>> │1 0 0 1 0│1 0 1 0│
>> │1 0 0 1 1│1 0 1 1│
>> │1 0 0 0 1│1 0 0 1│
>> │1 0 0 0 0│1 0 0 0│
>> └─────────┴───────┘
>>
>>
>> On Sun, Nov 17, 2013 at 2:53 PM, Bo Jacoby <bojacoby at yahoo.dk> wrote:
>>
>>> This program for graycode may be simpler?
>>>
>>> bin=.2 2 2 2&#:
>>> gray=.[:-.[:(=_1|.!.0"1])bin
>>> bin i.16
>>> 0 0 0 0
>>> 0 0 0 1
>>> 0 0 1 0
>>> 0 0 1 1
>>> 0 1 0 0
>>> 0 1 0 1
>>> 0 1 1 0
>>> 0 1 1 1
>>> 1 0 0 0
>>> 1 0 0 1
>>> 1 0 1 0
>>> 1 0 1 1
>>> 1 1 0 0
>>> 1 1 0 1
>>> 1 1 1 0
>>> 1 1 1 1
>>> gray i.16
>>> 0 0 0 0
>>> 0 0 0 1
>>> 0 0 1 1
>>> 0 0 1 0
>>> 0 1 1 0
>>> 0 1 1 1
>>> 0 1 0 1
>>> 0 1 0 0
>>> 1 1 0 0
>>> 1 1 0 1
>>> 1 1 1 1
>>> 1 1 1 0
>>> 1 0 1 0
>>> 1 0 1 1
>>> 1 0 0 1
>>> 1 0 0 0
>>>
>>>
>>>
>>>
>>> Den 19:40 søndag den 17. november 2013 skrev Jose Mario Quintana <
>>> jose.mario.quintana at gmail.com>:
>>>
>>> Thanks for the assertion and the correction. I knew it was named after a
>>>> person, hence the upper case G, but I am one of those that reads and
>>> writes
>>>> phonetically (if you know what I mean) and I could not see (hear) the
>>>> difference between Gray and grey.
>>>>
>>>> On Sun, Nov 17, 2013 at 12:06 PM, Henry Rich <HenryHRich at nc.rr.com>
>>> wrote:
>>>>
>>>>> Oh - and it's Gray code, not Grey. It's named not because you don't
>>> have
>>>>> black-to-white transitions on more than one bit at a time; it's named
>>> for
>>>>> Frank Gray.
>>>>>
>>>>>
>>>>> Henry Rich
>>>>>
>>>>> On 11/17/2013 11:24 AM, Jose Mario Quintana wrote:
>>>>>
>>>>>> 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 <r.e.boss at planet.nl> 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: programming-bounces at forums.jsoftware.com
>> [mailto:programming-
>>>>>>>> bounces at forums.jsoftware.com] 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" <rauldmiller at gmail.com>
>>> 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 <km at math.uh.edu> 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
>> <rauldmiller at gmail.com>
>>>>>>>>>>>
>>>>>>>>>> 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 <km at math.uh.edu>
>> 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
>>>>>>
>>>>>> ----------------------------------------------------------------------
>>>>> 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
>
More information about the Programming
mailing list