aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-03-11 00:05:27 +0000
committerGitHub <noreply@github.com>2024-03-11 00:05:27 +0000
commit8011d9504e4d6e322c5eacb078b7ec9bc110440d (patch)
tree30cce3539f39fccdf56270a705b8130a6ec9cbc4
parent5c1636419dea219197420faa0cea0f37973e165a (diff)
parent8da083a35209966954224eb29d404d29999c3b53 (diff)
downloadperlweeklychallenge-club-8011d9504e4d6e322c5eacb078b7ec9bc110440d.tar.gz
perlweeklychallenge-club-8011d9504e4d6e322c5eacb078b7ec9bc110440d.tar.bz2
perlweeklychallenge-club-8011d9504e4d6e322c5eacb078b7ec9bc110440d.zip
Merge pull request #9717 from BarrOff/barroff-259
feat: add solutions for challenge 259 from BarrOff
-rw-r--r--challenge-259/barroff/julia/ch-1.jl29
-rw-r--r--challenge-259/barroff/raku/ch-1.p621
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-259/barroff/julia/ch-1.jl b/challenge-259/barroff/julia/ch-1.jl
new file mode 100644
index 0000000000..515e38daab
--- /dev/null
+++ b/challenge-259/barroff/julia/ch-1.jl
@@ -0,0 +1,29 @@
+#!/usr/bin/env julia
+
+using Dates
+
+using Test: @test, @testset
+
+function banking_day_offset(
+ start_date::Date,
+ offset::T,
+ bank_holidays::Vector{Date} = Date[],
+)::Date where {T<:Integer}
+ if (start_date in bank_holidays) || (Dates.dayofweek(start_date) in (6, 7))
+ return banking_day_offset(start_date + Day(1), offset, bank_holidays)
+ end
+ if offset == 0
+ return start_date
+ end
+ return banking_day_offset(start_date + Day(1), offset - 1, bank_holidays)
+end
+
+@testset "Banking day offset" begin
+ @test banking_day_offset(
+ Date("2018-06-28", dateformat"y-m-d"),
+ 3,
+ [Date("2018-07-03", dateformat"y-m-d")],
+ ) == Date("2018-07-04", dateformat"y-m-d")
+ @test banking_day_offset(Date("2018-06-28", dateformat"y-m-d"), 3) ==
+ Date("2018-07-03", dateformat"y-m-d")
+end
diff --git a/challenge-259/barroff/raku/ch-1.p6 b/challenge-259/barroff/raku/ch-1.p6
new file mode 100644
index 0000000000..b4c7923b7d
--- /dev/null
+++ b/challenge-259/barroff/raku/ch-1.p6
@@ -0,0 +1,21 @@
+#!/usr/bin/env raku
+
+use v6.d;
+
+sub banking-day-offset(Date:D $start_date, Int:D $offset, @bank_holidays = [] --> Date) {
+ return banking-day-offset($start_date.succ, $offset, @bank_holidays) if $start_date.day-of-week ∈ (6, 7);
+ return banking-day-offset($start_date.succ, $offset, @bank_holidays) if $start_date ∈ @bank_holidays;
+ return $start_date if $offset == 0;
+ return banking-day-offset($start_date.succ, $offset - 1, @bank_holidays);
+}
+
+#| Run test cases
+multi sub MAIN('test') {
+ use Test;
+ plan 2;
+
+ is banking-day-offset(Date.new('2018-06-28'), 3, [Date.new('2018-07-03')]),
+ Date.new('2018-07-04'), 'works for 2018-07-04';
+ is banking-day-offset(Date.new('2018-06-28'), 3),
+ Date.new('2018-07-03'), 'works for 2018-07-03';
+}