Hi there. I want to recursively concatenate (union) sets that are not disjointed (the intersected set is not empty). For example, if I have the sets
(0)
(0 1)
(0 1 2)
(1 2 3)
(6 4 5)
The output should be:
((0 1 2 3)
(4 5 6)
This is the code when I compare iteratively sets one by one:
use Set::Scalar;
for $i ( 0 .. 4) {$cluster[$i] = Set::Scalar->new;}
$cluster[0]->insert(0);
$cluster[1]->insert(0,1);
$cluster[2]->insert(0,1,2);
$cluster[3]->insert(1,2,3);
$cluster[4]->insert(5,6,4);
for $i ( 0 .. 4) {
for $j ( $i+1 .. 4) {
if ($cluster[$i]->is_properly_intersecting($cluster[$j])) {$cluste
+r[$i]=$cluster[$i]+$cluster[$j];$cluster[$j]->clear;}
}}
The output is (not what I want):
(0)
(0 1 2 3)
(0 1 2)
()
(4 5 6)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.