in reply to Re^12: Date Array Convolution
in thread Date Array Convolution

Same result, your time being now pretty comparable to mine: 1m43.735s. :-)

Replies are listed 'Best First'.
Re^14: Date Array Convolution
by BrowserUk (Patriarch) on Nov 09, 2011 at 15:06 UTC

    This is just for grins, but a thought came to me over my morning tea. How does this fare?:

    #! perl -slw use strict; use Data::Dump qw[ pp ]; sub dhm2int { my( $d, $h, $m ) = unpack '(A2)*', $_[0]; return ( ( $d - 1 ) * 24 + $h ) * 60 + $m; } sub int2dhm { sprintf "%02d%02d%02d", int($_[0]/1440)+1, int($_[0]/60)%24, $_[0] +%60; } my @data = sort{ $b->[2] <=> $a->[2] } map[ split ], <>; my $tally = chr(255) x ( 31*24*60 ); for my $d ( @data ) { my $s = dhm2int( $d->[0] ); my $e = dhm2int( $d->[1] ); substr( $tally, $s, $e-$s+1, chr( $d->[2] ) x ( $e - $s + 1 ) ); } my @res; my $i = 0; while( $i < length( $tally ) ) { ++$i until vec( $tally, $i, 8 ) != 255; my $val = vec( $tally, $i, 8 ); my $start = $i++; ++$i while $i % 1440 and vec( $tally, $i, 8 ) == $val; my $end = $i - 1; push @res, [ int2dhm( $start ), int2dhm( $end ), $val ]; } pp \@res;

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      Heh, less than 2 seconds. Sorting according to value - very clever!