perlquestion
BrowserUk
<p>Given 2 arrays of numbers, I want an efficient algorithm for "cancelling out". (There is probably a proper name for this, but I don't know it).
<p>Most easily described by example. Given:
<li><code>@a = ( 10, 20, 33, 45, 60 );</code>
<li><code>@b = ( 2, 5, 10, 12, 16, 23, 45 );</code>
<p>I want to cancel values between the arrays to end up with:
<li><code>@c = ( 5, 33 );</code> Please note that 5 does not appear in @a.
<li><code>@d = ( 8, 23 );</code> And 8 does not appear in @b.
<p>Note. This is a trivial example. Both the sizes of the arrays and the values will be much larger.
<p>Update: This is not the elimination of duplicates or intersection of arrays. Once any duplicates have been eliminated, it then becomes a task of reducing factors from @a & @b unil no further factors can be removed.
<div class="pmsig"><div class="pmsig-171588">
<hr />
<font size=1 >
<div>Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.</div>
<div>Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?</div>
<div>"Science is about questioning the status quo. Questioning authority". </div>
<div>The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.</div>
</font>
</div></div><p><small>2005-08-16 Retitled by [Arunbear], as per Monastery [id://341118|guidelines] <br />Original title: 'Algorithm wanted'</small></p>