aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-05-31 12:56:58 +0100
committerGitHub <noreply@github.com>2025-05-31 12:56:58 +0100
commit5051b1bf52fbb87357ca293d9a82c8f72342c615 (patch)
treefb657f244d32b43379b4c34dfa3488144525ee06
parent4e6933931646d1faaec0b80ee00e6e7d12fedaa7 (diff)
parent4392d711881b135e4eac7e545f6f514974304a21 (diff)
downloadperlweeklychallenge-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.raku12
-rw-r--r--challenge-323/mark-anderson/raku/ch-2.raku18
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
+}