Algorithm-LineSegments
view release on metacpan or search on metacpan
lib/Algorithm/LineSegments.pm view on Meta::CPAN
return 1;
};
my $heap = Heap::Priority->new;
$heap->lowest_first;
$heap->add($_, $o{cost}->($_, $_+1)) for 0 .. $#q - 1;
###################################################################
# I haven't found a good solution to maintain the heap and modify
# the list, so as a workaround the heap identifies a mergable pair
# with the key and when merging elements of a pair, the second
# element is replaced by `undef` to maintain the size of the list,
# so the heap keys, indices into the list, remain valid. This has
# the consequence of producing gaps in the list, and the variables
# below maintain how the gaps can be skipped.
###################################################################
my %next = map { $_ => $_ + 1 } 0 .. $#q - 1;
my %prev = map { $_ => $_ - 1 } 1 .. $#q - 1;
for (my $count = @q;;) {
my $ix = $heap->pop;
( run in 0.789 second using v1.01-cache-2.11-cpan-39bf76dae61 )