From ecf2bdd1f0de19e83f06e98ea9a468beb87f07f4 Mon Sep 17 00:00:00 2001 From: BarrOff <58253563+BarrOff@users.noreply.github.com> Date: Sun, 2 Feb 2025 21:47:27 +0100 Subject: feat: add solution for challenge 306 from BarrOff --- challenge-306/barroff/raku/ch-1.p6 | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 challenge-306/barroff/raku/ch-1.p6 diff --git a/challenge-306/barroff/raku/ch-1.p6 b/challenge-306/barroff/raku/ch-1.p6 new file mode 100644 index 0000000000..06adba164c --- /dev/null +++ b/challenge-306/barroff/raku/ch-1.p6 @@ -0,0 +1,38 @@ +#!/usr/bin/env raku + +use v6.d; + +sub sum-n-slices(@ints, Int $n --> Int) { + sum( + map( + { + @ints[$_ - 1] × + min($n, $_, @ints.elems + 1 - $_, @ints.elems + 1 - $n) + }, + 1..@ints.elems + ) + ) +} + +sub odd-sum(@ints --> Int) { + sum( + map( + { $_ %% 2 ?? 0 !! sum-n-slices(@ints, $_) }, + 1..@ints.elems + ) + ) +} + +#| Run test cases +multi sub MAIN('test') { + use Test; + plan 2; + + is odd-sum([2, 5, 3, 6, 4]), 77, 'works for [2, 5, 3, 6, 4]'; + is odd-sum([1, 3]), 4, 'works for [1, 3]'; +} + +#| Take user provided number like 1 0 1 +multi sub MAIN(*@ints) { + say odd-sum(@ints); +} -- cgit