in reply to Re^3: Searching parallel arrays.
in thread Searching parallel arrays.

Thanks for this. You've found two problems, one of which I had already discovered and solved, the other I had not.

The first was that this code

if( @seq > 1 and $seq[ -1 ][ 0 ] > ( $seq[ -2 ][ 0 ] + 1 ) ) { pop @seq; if( @seq >= 4 ) { push @seqs, [ @seq ]; } undef @seq;

discarded the non sequential value. If that was the start of a new sequence, the new sequence was missed or truncated. The fix is:

if( @seq > 1 and $seq[ -1 ][ 0 ] > ( $seq[ -2 ][ 0 ] + 1 ) ) { my $temp = pop @seq; if( @seq >= 4 ) { push @seqs, [ @seq ]; } @seq = $temp;

The second is that if the last value of the set is also the last value of a sequence, and that sequence is also the minimal length (4 in this case), that sequence is not saved. I'm not sure how to fix this yet.

Update: Not as clean as I would hope to achieve, but a final check for a complient sequence outside the while loop fixes the second problem. I'll update the code above to reflect the fix.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.