From e974a5b268c837d3b8e4f1e0ce5b460fbbce8de9 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Mon, 29 May 2023 13:59:26 +0200 Subject: Task 2 done --- challenge-219/luca-ferrari/raku/ch-2.p6 | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 challenge-219/luca-ferrari/raku/ch-2.p6 diff --git a/challenge-219/luca-ferrari/raku/ch-2.p6 b/challenge-219/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..3e4b074d88 --- /dev/null +++ b/challenge-219/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,47 @@ +#!raku + +# +# Perl Weekly Challenge 219 +# Task 2 +# +# See +# + +sub MAIN() { + +# my @costs = 2, 7, 25; + my @days = 1, 5, 6, 7, 9, 15; + + # sort the days + @days .= sort; + + my %costs; + %costs<1> = 2; + %costs<7> = 7; + %costs<30> = 25; + + my @evaluated; + @evaluated.push: { cost => 0, days => @days }; + my $current-cost = @days.elems * %costs<1>; + + while ( @evaluated.elems > 0 ) { + my %entry = @evaluated.shift; + + if ( %entry.elems == 0 ) { + $current-cost = %entry if ( %entry < $current-cost ); + } + else { + next if ( %entry >= $current-cost ); + + my $begin-date = %entry[ 0 ]; + for %costs.keys { + my $end-date = $begin-date + $_ - 1; + my @uncovered-days = %entry.grep( * > $end-date ); + my $cost = %entry + %costs{ $_ }; + @evaluated.push: { cost => $cost, days => @uncovered-days }; + } + } + } + + say $current-cost; +} -- cgit