in reply to Mutually Exclusive Elements

Sounds like set arithmetic to me.. I would recommend Set::Scalar

I threw this together as an example. Course order is wacked when you use sets...

use strict; use Set::Scalar; my $a = [1,2,3,4,5,6]; my $b = [3,4,5,7,8]; my $c = [3,6,8,9]; my $sa = Set::Scalar->new(@$a); my $sb = Set::Scalar->new(@$b); my $sc = Set::Scalar->new(@$c); my $x = 3; my $mina = $sa - $sb - $sc + ($sa * $x); my $minb = $sb - $sa + ($sb * $x); my $minc = $sc - $sb + ($sc * $x); print("Minimum Set A:" . join(',', $mina->members) . "\n"); print("Minimum Set B:" . join(',', $minb->members) . "\n"); print("Minimum Set C:" . join(',', $minc->members) . "\n"); __END__ Minimum Set A:1,3,2 Minimum Set B:8,3,7 Minimum Set C:6,3,9

"Look, Shiny Things!" is not a better business strategy than compatibility and reuse.


OSUnderdog

Replies are listed 'Best First'.
Re^2: Mutually Exclusive Elements
by Zed_Lopez (Chaplain) on Dec 03, 2004 at 00:30 UTC

    Unless I completely misunderstand the requirements, it's only by coincidence you're getting the same results. $x is the number of elements to return, which happens to be equal to the value of the element which is common to all in the given example. And it's a coincidence that you get two elements after your set differences such that after your union, you're up to 3 elements.

    With a $x that was different from the value of the common element, or more elements in common such that the set differences didn't have two elements, your results would be very different.

    Why did you do $sa - $sb - $sc for the first and not $sb - $sa - $sc and $sc - $sa - $sb for the second and third?