From 3c0655eef6f351c4dd035fd7fcdd776840e95ec3 Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Fri, 19 Feb 2021 19:36:42 +0100 Subject: solutions week 100 --- challenge-100/wambash/raku/ch-1.raku | 26 ++++++++++++++++++++++++++ challenge-100/wambash/raku/ch-2.raku | 24 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 challenge-100/wambash/raku/ch-1.raku create mode 100644 challenge-100/wambash/raku/ch-2.raku diff --git a/challenge-100/wambash/raku/ch-1.raku b/challenge-100/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..bd1328645e --- /dev/null +++ b/challenge-100/wambash/raku/ch-1.raku @@ -0,0 +1,26 @@ +#!/usr/bin/env raku + +multi fun-time($time) { + $time ~~ / (\d+) ':' (\d+) \s* (<[ap]>m)? /; + + with $2 { + when 'am' { $0 ~ ':' ~ $1 } + when 'pm' { $0 + 12 ~ ':' ~ $1 } + } orwith $0 { + when * ≤ 12 { $0 ~ ':' ~ $1 ~ 'am' } + when * > 12 { '0' ~ ($0 - 12) ~ ':' ~ $1 ~ 'pm' } + } +} + +multi MAIN ($time) { + say fun-time $time +} + +multi MAIN (Bool :$test! ) { + use Test; + is fun-time('19:20'), '07:20pm'; + is fun-time('07:20pm'), '19:20'; + is fun-time('07:20 am'), '07:20'; + is fun-time('07:20'), '07:20am'; + done-testing; +} diff --git a/challenge-100/wambash/raku/ch-2.raku b/challenge-100/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..17f5776857 --- /dev/null +++ b/challenge-100/wambash/raku/ch-2.raku @@ -0,0 +1,24 @@ +#!/usr/bin/env raku + +sub triangle-sum-reducer (@a, @b) { + Inf, |@a, Inf + andthen .rotor: 2 => -1 + andthen .map: *.min + andthen $_ Z+ @b +} + +sub triangle-sum ( +@a ) { + @a + andthen .reduce: &triangle-sum-reducer + andthen .min +} + +multi MAIN (Bool :$test!) { + use Test; + is triangle-sum-reducer( [1], [2,4] ), (3,5); + is triangle-sum-reducer( [6,4,9], [5,1,7,2] ), (11,5,11,11); + + is triangle-sum( [3], [3,1], [5,2,3], [4,3,1,3] ), 7; + is triangle-sum( [1], [2,4], [6,4,9], [5,1,7,2] ), 8; + done-testing; +} -- cgit