generative modeling for Rhino
Hi,
I am trying to apply a permutation to a set of values and obtain, as output, all of the possible arrangements without any duplicate.
As an example
if I have the following set of 3 values:
{A,B,C} n=3
I want to obtain:
{A,B,C}; {A,C,B}; {C,A,B}; {B,C,A}; {B,A,C}; {C,B,A}
I know that the possible arrangements will be given by n! (see *)
that means 3! = 3x2x1 = 6
I will have 6 possible arrangements.
So, I tried using the Jitter component with 6 different seeds values but I obtain a set of values with some kind of repetition (B,C,A is missing and C,B,A is repeated twice). Why is this happening? Is it wrong to use the jitter component with different seed values?
Many thanks!
kiara
*(or n!/(n-k)! if the size k of the permutation needs to be different from the number n of values in the set)
Tags: combination, factorial, jitter, of, permutation, set, shuffle, values
Permalink Reply by Danny Boyes on August 12, 2011 at 8:37am With only 3 variables I don't think you are going to see the variance in such a finite amount of seeds.
I would use this approach:
Still using the Jitter component, but with overkill in generating the sequences. Then you can use (with a bit of string manipulation) the Create Sets component to get your unique versions.
Permalink Reply by kiara on August 12, 2011 at 8:48am great! thanks Danny for the quick reply!
I had increased the seed number but couldn't figure out how to delete the duplicate branches...was stuck with numbers and didn't think of manipulating the strings. Just perfect!
thanks,
kiara

This sounds like a job for Bicycle Repair Man.
This will be quite tricky to achieve, especially if you have a large set of initial values, as you will most likely end up generating a lot of combinations, then reducing the collection using Set components (as Danny pointed out).
I mocked up another approach, though I don't think this is what you're after either as it generates values that contain a certain value twice (AAB). Plus it only works on single characters.
I think you may have to venture into scripting to get this one right with a minimum of wasted processor cycles and memory.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Permalink Reply by kiara on August 12, 2011 at 9:52am thanks for the reply David!!
I added the Substring component at the end so it can work on multiple characters.
Both suggestions are very useful in order to choose whether we want either "n!" solutions (6 arrangements without repition of any value) or "n power of n" solutions (27 arrangements considering repitition of values).
many thanks!
kiara
Permalink Reply by kiara on August 12, 2011 at 10:00am
Permalink Reply by marshall prado on September 1, 2011 at 4:43pm I am working on something similar with numbers where I am trying to find all possible summations of 5 numbers without "duplicates". for example:
(If I used three numbers instead for simplicity) 1, 5, 6 would be 1,5,6,6,7,11,12
In this case the two 6's are not actually duplicates bc one is 6+none of the other numbers and the other is 5+1, yet 1+5 would be a duplicate since those numbers had been added already.
Is there a simple way of finding these values for a set of 5 values?
In the ABC definition above, repeated solutions with a different letter orders would count as a distinct solutions but with numbers the order wouldn't matter. I'm not sure if I am over thinking this and making this a more difficult problem than it is? Any advice?
Permalink Reply by Danny Boyes on September 2, 2011 at 3:38am
Permalink Reply by Dedackelzucht on September 2, 2011 at 4:41am very cool danny, i just do not get it how the cluster works. I oen it and treid to understand, but I didin´t.
Best Regards
Dedackel
Permalink Reply by Danny Boyes on September 2, 2011 at 4:56am To convert a decimal number to binary you divide it by 2 and keep going until you get to zero making a note of the remainder as you go.
157 \ 2 = 78 remainder 1
78 \ 2 = 39 remainder 0
39 \ 2 = 19 remainder 1
19 \ 2 = 9 remainder 1
9 \ 2 = 4 remainder 1
4 \ 2 = 2 remainder 0
2 \ 2 = 1 remainder 0
1 \ 2 = 0 remainder 1 <--- Left hand number 10011101
Permalink Reply by Dedackelzucht on September 2, 2011 at 6:07am And thats why it is limited to 8 numbers.
I think I got it.
Thanks Danny!
Added by Mgeorgio 0 Comments 0 Likes
Added by Mgeorgio 0 Comments 0 Likes
© 2013 Created by Scott Davidson.
Powered by