aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2024-03-04 15:49:44 +0000
committerMark <53903062+andemark@users.noreply.github.com>2024-03-04 15:49:44 +0000
commitc29a28ed8b8ba76560ddcddbdaa84c1fd82e90c7 (patch)
treea91a56d7aa6328409dee7e98cdf891d934f1b1c8
parent317868d8b68301864db17e9dac3f9b15ffa8b448 (diff)
downloadperlweeklychallenge-club-c29a28ed8b8ba76560ddcddbdaa84c1fd82e90c7.tar.gz
perlweeklychallenge-club-c29a28ed8b8ba76560ddcddbdaa84c1fd82e90c7.tar.bz2
perlweeklychallenge-club-c29a28ed8b8ba76560ddcddbdaa84c1fd82e90c7.zip
ch-1.raku
-rw-r--r--challenge-259/mark-anderson/raku/ch-1.raku25
1 files changed, 25 insertions, 0 deletions
diff --git a/challenge-259/mark-anderson/raku/ch-1.raku b/challenge-259/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..26c0180e8e
--- /dev/null
+++ b/challenge-259/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,25 @@
+#!/usr/bin/env raku
+use Test;
+
+is banking-day-offset('2018-06-28', 3), '2018-07-03';
+is banking-day-offset('2018-06-28', 3, ['2018-07-03']), '2018-07-04';
+is banking-day-offset('2018-06-30', 0), '2018-07-02';
+is banking-day-offset('2018-06-30', 8, ['2018-07-04', '2018-07-03']), '2018-07-16';
+is banking-day-offset('2018-07-02', 0), '2018-07-02';
+is banking-day-offset('2018-07-16', 4), '2018-07-20';
+
+sub banking-day-offset($date is copy, $offset is copy, @holidays=[])
+{
+ $date .= Date;
+
+ loop
+ {
+ given $date++
+ {
+ if all(.day-of-week ~~ 1..5, .yyyy-mm-dd !(elem) @holidays)
+ {
+ return .yyyy-mm-dd unless $offset--
+ }
+ }
+ }
+}