I have the idea of implementing something like a modified Boyer-Moore search on your data structure, but your description and data don't match:

The rule is each array contains a sorted (ascending) sequence of non-contiguous, unique integers, but my @a3 = ( 205, 206, 315 ); contains the two contiguous numbers 205 and 206.

If the data is wrong and the description is right, my algorithm would be to

  1. Take a look at the highest number of the four numbers at the start of the array. This highest number must be present in the sequence, as every array can only contribute one number/entry to the sequence, per sequence. This assumption/consequent is wrong, see Not a Number's reply below.
  2. Then, move forward in the other three arrays up to that number-3, by using a binary search.
  3. Then, look at the number found by the binary search, or if not found the next greater entry. By definition, there are no duplicates, so the elements in the arrays are all different and all equal or greater than $number-3.
  4. Look at the four numbers now. If they make up a sequence all is well. Otherwise, remove all the previous smaller elements from the arrays and start over at step 1.

I think this algorithm optimizes discarding non-matches over finding matches.


In reply to Re: Searching parallel arrays. by Corion
in thread Searching parallel arrays. by BrowserUk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.