Er... ok, you could use some kind of encoding of integers in a higher
ranked array.

That would tend to become inefficient (when you exceed N partitions
you require more storage than fixed width integers, for example), but
you are right that it's possible. And, in fact, there's a direct
mapping between the integer representation and your current
suggestion.

   =0 1 2 2 2
1 0 0 0 0
0 1 0 0 0
0 0 1 1 1

And, generally (where x -&# y and (/:~ -: i.@#)~.x):

   (x </. y) -: (=x) <#"1 y
1

Thanks,

-- 
Raul




On Tue, Nov 14, 2017 at 5:12 AM, Erling Hellenäs
<[email protected]> wrote:
> HI all!
>
> Yes. It would make sense. The output could be a three-dimensional array of
> set-partition, set and set-item.
>
> This item in the array:
>
> 1 0 0 0 0
> 0 1 0 0 0
> 0 0 1 1 1
>
> would then describe
>
> (0)(1)(2 3 4)
>
> The items could also be transposed(set-partition, set-item, set):
>
> 1 0 0
> 0 1 0
> 0 0 1
> 0 0 1
> 0 0 1
>
> I don't know which is best. I prefer the first.
>
> We could move items between sets with cray-code-like techniques.
>
> It would be easy to rewrite parRuskey to handle booleans. Bitmaps would be
> more tricky.
>
> Cheers,
>
> Erling Hellenäs
>
>
> Den 2017-11-14 kl. 07:37, skrev 'Skip Cave' via Programming:
>>
>> This thread has been an interesting exploration of the many ways to
>> implement
>> "all combinations of y unique items, x items at a time". I like the idea
>> that these
>> combination verbs produce a bitmap that can be used to select from a list
>> of
>> unique items to produce the final combinations.
>>
>> Does it make sense to use this same technique to generate a partition verb
>> which produces a bitmap, which can then be used to partition a list of
>> unique items
>> showing "all ways to partition y objects into x partitions"?
>> Would the combination verbs developed previously help simplify the
>> partition verb?
>>
>> Partition verb rules:
>> 1. The par verb is a dyadic verb: x par y where x is the number of
>> partitions (boxes)
>> & y is the number of unique items to be partitioned (boxed).
>>
>> 2. The par verb should generate all the ways that y items can be
>> partitioned into
>> x partitions (containers). Each row in the output will show a different
>> allocation
>> of the y items.
>>
>> 3. The partition verb should produce a partitioned bitmap which can be
>> used
>> to
>> select items from the list y, and place them in the appropriate
>> partitions.
>>
>> 4. Every partition must have at least one item in it. (no empty
>> partitions)
>>
>> 5. Every item can only appear once in each partition trial (row).
>>
>> 6. Re-ordering the items in a single partition does not create a new
>> unique
>> partition.
>>
>> 5. Re-ordering partitions where the same items are still in each
>> partition,
>> is not a new
>> partition trial.
>>
>> The result of x par y should be a bitmap such that (x par y) f list will
>> show
>> all the possible ways to partition y items in x partitions
>>
>>      2 par 3
>>
>> ┌─────┬─────┐
>>
>> │1 1 0 │0 0 1 │
>>
>> ├─────┼─────┤
>>
>> │1 0 1 │0 1 0 │
>>
>> ├─────┼─────┤
>>
>> │0 1 1 │1 0 0 │
>>
>> └─────┴─────┘
>>
>>
>> NB. now what is 'f':
>>
>>
>>     (2 par 3) f 'abc'
>>
>> ┌──┬─┐
>>
>> │ab│c│
>>
>> ├──┼─┤
>>
>> │ac│b│
>>
>> ├──┼─┤
>>
>> │bc│a│
>>
>> └──┴─┘
>>
>>
>> Skip
>>
>> Skip Cave
>> ----------------------------------------------------------------------
>> 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

Reply via email to