aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark <53903062+andemark@users.noreply.github.com>2023-03-13 23:46:12 +0000
committerMark <53903062+andemark@users.noreply.github.com>2023-03-13 23:46:12 +0000
commit4acaa7af727c18449670d3167b386f057b9c55bd (patch)
tree50f7da948eee4f3d63a4e60871d99154b5d2e46b
parent0f4a809c0bead5e3fd8bc4616e1c011c9d6fb8a9 (diff)
downloadperlweeklychallenge-club-4acaa7af727c18449670d3167b386f057b9c55bd.tar.gz
perlweeklychallenge-club-4acaa7af727c18449670d3167b386f057b9c55bd.tar.bz2
perlweeklychallenge-club-4acaa7af727c18449670d3167b386f057b9c55bd.zip
Challenge 208 Solutions (Raku)
-rw-r--r--challenge-208/mark-anderson/raku/ch-1.raku52
-rw-r--r--challenge-208/mark-anderson/raku/ch-2.raku31
2 files changed, 83 insertions, 0 deletions
diff --git a/challenge-208/mark-anderson/raku/ch-1.raku b/challenge-208/mark-anderson/raku/ch-1.raku
new file mode 100644
index 0000000000..d28af6fc98
--- /dev/null
+++ b/challenge-208/mark-anderson/raku/ch-1.raku
@@ -0,0 +1,52 @@
+#!/usr/bin/env raku
+use Test;
+
+is-deeply(min-index-sum(<Perl Raku Love>, <Raku Perl Hate>), ("Perl", "Raku"), "Example 1");
+
+is-deeply(min-index-sum(<A B C>, <D E F>), (), "Example 2");
+
+is-deeply(min-index-sum(<A B C>, <C A B>), ("A",), "Example 3");
+
+is-deeply(min-index-sum(<V E T Y W J Z A H S D P F N C G X K B R L U O M Q>,
+ <G Q B P W I L N U K T V H C R A J D S O Y F E Z M>,
+ <B J X E P Q T W V H M G D C U N F I Z S O K R A L>,
+ <Z G O E B V A W I J N M Q S T R X P K L F H U Y D>,
+ <Z C P X B O U L W V R M J H E D Y Q F I K A T N G>,
+ <P E B N W R U T X C K Z Q F G S V L D M J H Y A O>,
+ <T A D V K P U S H W Z Q F I N M J C E Y L X R B O>,
+ <K X C F D Y J G A P E H Z M T B L S V U R O I N W>,
+ <Z D G R O P K Y H X B S T I V Q A N L F M U C E W>,
+ <H C Q S J B D Y T W N E M P I V O R F G A L K U Z>), ("V",), "10 X 25");
+
+is-deeply(min-index-sum(<X W F Z S O B R E C A Q L D M V U H Y K G P T J I>,
+ <M R L W X F J I S B D G P Q Z V C O A E N T H Y K>,
+ <Y N D U I J A Q F Z W P O H R S L X T V C E B M K>,
+ <Y T J D V H K R G I E P S O N B C X Z U W M L F Q>,
+ <V E T Y W J Z A H S D P F N C G X K B R L U O M Q>,
+ <G Q B P W I L N U K T V H C R A J D S O Y F E Z M>,
+ <B J X E P Q T W V H M G D C U N F I Z S O K R A L>,
+ <Z G O E B V A W I J N M Q S T R X P K L F H U Y D>,
+ <Z C P X B O U L W V R M J H E D Y Q F I K A T N G>,
+ <P E B N W R U T X C K Z Q F G S V L D M J H Y A O>,
+ <T A D V K P U S H W Z Q F I N M J C E Y L X R B O>,
+ <K X C F D Y J G A P E H Z M T B L S V U R O I N W>,
+ <Z D G R O P K Y H X B S T I V Q A N L F M U C E W>,
+ <H C Q S J B D Y T W N E M P I V O R F G A L K U Z>,
+ <K X P M W G Y J H U F D O L N S V E R A Q I C T Z>,
+ <Q P A O X E Y J R U L B M N S W F V Z D G C I H K>,
+ <U R M K T A H C V S B O Y X G D F Z I W L E J P N>,
+ <I V E Z C K B U O H G J X D L P T Q W Y F N A R M>,
+ <B H P M W N E X C S R A Z I T O F G Y V J U Q D K>,
+ <U X Q P H E D A B F Z K L O G T V C I Y R N J W M>,
+ <U N E V Z I B J F H C Q L S W T Y G P O R M D K X>,
+ <N X H M G J S V L U W Q I T Z A B E F O K R P Y D>,
+ <L O S X A U P R Q M Z J D V F E B N W K T Y I C H>,
+ <Z X S D H T O F L C Q G M P V B K E Y U A R I W J>,
+ <S J C N P X T G B V D F A W M K L O H I Z U Y R E>), ("D", "E", "W"), "25 X 25");
+
+sub min-index-sum(+$a)
+{
+ my $m := $a>>.antipairs>>.Map;
+ my $k := ([(&)] $m).keys;
+ ($k Z=> [Z+] $m>>{$k}).Map.minpairs.Map.keys.sort
+}
diff --git a/challenge-208/mark-anderson/raku/ch-2.raku b/challenge-208/mark-anderson/raku/ch-2.raku
new file mode 100644
index 0000000000..b7cf810067
--- /dev/null
+++ b/challenge-208/mark-anderson/raku/ch-2.raku
@@ -0,0 +1,31 @@
+#!/usr/bin/env raku
+use Algorithm::Diff;
+use Test;
+
+is-deeply duplicate-and-missing(1,2,2,4), (2,3);
+is-deeply duplicate-and-missing(1,2,3,4), -1;
+is-deeply duplicate-and-missing(1,2,3,3), (3,4);
+is-deeply duplicate-and-missing(4,5,6,7,7,8), (7,9);
+is-deeply duplicate-and-missing(4,5,6,7,7,9), (7,8);
+
+# Algorithm::Diff
+is-deeply diff-module(1,2,2,4), ("2", "3");
+is-deeply diff-module(1,2,3,4), (Nil, Nil);
+is-deeply diff-module(1,2,3,3), ("3", "4");
+is-deeply diff-module(4,5,6,7,7,8), ("7", "9");
+is-deeply diff-module(4,5,6,7,7,9), ("7", "8");
+
+sub duplicate-and-missing(*@nums)
+{
+ given @nums
+ {
+ my @range = .head .. .head + .end;
+ flat .repeated, keys @range (-) $_ or -1
+ }
+}
+
+sub diff-module(*@nums)
+{
+ my @range = .head .. .head + .end given @nums;
+ diff(@nums, @range).comb(/\d+/)[1,3]
+}