diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-05-31 12:56:58 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-31 12:56:58 +0100 |
| commit | 5051b1bf52fbb87357ca293d9a82c8f72342c615 (patch) | |
| tree | fb657f244d32b43379b4c34dfa3488144525ee06 | |
| parent | 4e6933931646d1faaec0b80ee00e6e7d12fedaa7 (diff) | |
| parent | 4392d711881b135e4eac7e545f6f514974304a21 (diff) | |
| download | perlweeklychallenge-club-5051b1bf52fbb87357ca293d9a82c8f72342c615.tar.gz perlweeklychallenge-club-5051b1bf52fbb87357ca293d9a82c8f72342c615.tar.bz2 perlweeklychallenge-club-5051b1bf52fbb87357ca293d9a82c8f72342c615.zip | |
Merge pull request #12107 from andemark/challenge-323
Challenge 323 Solutions (Raku)
| -rw-r--r-- | challenge-323/mark-anderson/raku/ch-1.raku | 12 | ||||
| -rw-r--r-- | challenge-323/mark-anderson/raku/ch-2.raku | 18 |
2 files changed, 30 insertions, 0 deletions
diff --git a/challenge-323/mark-anderson/raku/ch-1.raku b/challenge-323/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..c712cd2f95 --- /dev/null +++ b/challenge-323/mark-anderson/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/usr/bin/env raku +use Test; + +is increment-decrement(<--x x++ x++>), 1; +is increment-decrement(<x++ ++x x++>), 3; +is increment-decrement(<x++ ++x --x x-->), 0; + +sub increment-decrement(@operations) +{ + my %m is Map = @operations.classify({ .contains('+') }); + quietly %m<True> - %m<False> +} diff --git a/challenge-323/mark-anderson/raku/ch-2.raku b/challenge-323/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..1935ad2b5e --- /dev/null +++ b/challenge-323/mark-anderson/raku/ch-2.raku @@ -0,0 +1,18 @@ +#!/usr/bin/env raku +use Test; + +is tax-amount(10, ([3,50], [7,10], [12,25])), 2.65; +is tax-amount(2, ([1,0], [4,25], [5,50])), 0.25; +is tax-amount(0, ([2,50])), 0; + +sub tax-amount($income, @tax) +{ + my @brackets = @tax.flat[0,2...*]; + my @taxes = @tax.flat[1,3...*]; + my $end = @brackets.first(* >= $income, :k); + + @brackets[$end] = $income; + @brackets = flat 0, @brackets[0..$end]; + + ([+] @brackets.rotor(2 => -1).flat.map({ $^b - $^a }) Z* @taxes) / 100 +} |
