diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-03-11 00:05:27 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-11 00:05:27 +0000 |
| commit | 8011d9504e4d6e322c5eacb078b7ec9bc110440d (patch) | |
| tree | 30cce3539f39fccdf56270a705b8130a6ec9cbc4 | |
| parent | 5c1636419dea219197420faa0cea0f37973e165a (diff) | |
| parent | 8da083a35209966954224eb29d404d29999c3b53 (diff) | |
| download | perlweeklychallenge-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.jl | 29 | ||||
| -rw-r--r-- | challenge-259/barroff/raku/ch-1.p6 | 21 |
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'; +} |
