At 12:43 AM 7/4/99 -0400, Chaim Frenkel wrote: > >>>>> "PS" == Peter Scott <Peter@PSDT.com> writes: > >PS> The reason the first list contains 10:06 yet the interval is 5 minutes is >PS> because there are events in the same group in A occurring later than >PS> 10:00. The process is: given an event in A at time a, find the next >event >PS> b in B occurring in [a,a+5]; if any events in A occur in (a,b] then add >PS> them to the group, let the latest one be a', and adjust the interval for >PS> finding new events in B for the group to be [a',a'+5]. > >PS> Any ideas for something better? > >How does this look? It looks like it doesn't produce the right answer :-) This is what my code outputs: alist = 1 2 4 7 blist = 3 6 9 alist = 37 38 39 blist = 42 43 44 alist = 51 52 53 blist = 54 alist = 71 blist = 80 81 alist = 90 blist = 91 >#!/usr/bin/perl -w >my @A = qw(1 2 4 7 21 37 38 39 51 52 53 71 90 100); >my @B = qw( 3 6 9 18 42 43 44 54 80 81 82 83 >84 91 117); >my $D = 10; > >push(@ao, $a = shift(@A)); >push(@bo, $b = shift(@B)); >while(@A && @B) { > if ($B[0] <= $a + $D) { > push(@bo, $b = shift(@B)); > next; > } > if ($A[0] <= $b) { > push(@ao, $a = shift(@A)); > next; > } > > print "A: ",join(",", @ao),"\t" > ,"B: ",join(",", @bo),"\n"; > > @ao = @bo = (); > push(@ao, $a = shift(@A)); > push(@bo, $b = shift(@B)); >} > >print "A: ",join(",", @ao),"\t" > ,"B: ",join(",", @bo),"\n"; > >__END__ >A: 1,2,4,7 B: 3,6,9 >A: 21 B: 18 >A: 37,38,39 B: 42,43,44 >A: 51,52,53 B: 54 >A: 71 B: 80,81 >A: 90 B: 82,83,84,91 >A: 100 B: 117 -- Peter Scott Pacific Systems Design Technologies ==== Want to unsubscribe from Fun With Perl? Well, if you insist... ==== Send email to <fwp-request@technofile.org> with message _body_ ==== unsubscribe