aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-335/barroff/raku/ch-1.p629
-rw-r--r--challenge-336/barroff/raku/ch-1.p628
2 files changed, 57 insertions, 0 deletions
diff --git a/challenge-335/barroff/raku/ch-1.p6 b/challenge-335/barroff/raku/ch-1.p6
new file mode 100644
index 0000000000..ce7b6486ba
--- /dev/null
+++ b/challenge-335/barroff/raku/ch-1.p6
@@ -0,0 +1,29 @@
+#!/usr/bin/env raku
+
+use v6.d;
+
+sub common-characters(@words --> Seq) {
+ (reduce { $^a ∩ $^b }, @words.map({ $_.comb.Bag })).kxxv
+}
+
+#| Run test cases
+multi sub MAIN('test') {
+ use Test;
+ plan 5;
+
+ is common-characters(["bella", "label", "roller"]).sort, ["e", "l", "l"],
+ 'works for "bella", "label", "roller"';
+ is common-characters(["cool", "lock", "cook"]).sort, ["c", "o"],
+ 'works for "cool", "lock", "cook"';
+ is common-characters(["hello", "world", "pole"]).sort, ["l", "o"],
+ 'works for "hello", "world", "pole"';
+ is common-characters(["abc", "def", "ghi"]).sort, [],
+ 'works for "abc", "def", "ghi"';
+ is common-characters(["aab", "aac", "aaa"]).sort, ["a", "a"],
+ 'works for "aab", "aac", "aaa"';
+}
+
+#| Take user provided words like Perl Weekly Challenge
+multi sub MAIN(*@words) {
+ say common-characters(@words);
+}
diff --git a/challenge-336/barroff/raku/ch-1.p6 b/challenge-336/barroff/raku/ch-1.p6
new file mode 100644
index 0000000000..8f434a15ee
--- /dev/null
+++ b/challenge-336/barroff/raku/ch-1.p6
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+
+use v6.d;
+
+sub equal-group(@ints --> Bool) {
+ my $groups = @ints.Bag;
+ my Int $mg = $groups.values.min;
+ return False if $mg == 1;
+ so all($groups.values.map({ $_ mod $mg })) == 0;
+}
+
+#| Run test cases
+multi sub MAIN('test') {
+ use Test;
+ plan 5;
+
+ is equal-group([1,1,2,2,2,2]), True, 'works for [1,1,2,2,2,2]';
+ is equal-group([1,1,1,2,2,2,3,3]), False, 'works for [1,1,1,2,2,2,3,3]';
+ is equal-group([5,5,5,5,5,5,7,7,7,7,7,7]), True,
+ 'works for [5,5,5,5,5,5,7,7,7,7,7,7]';
+ is equal-group([1,2,3,4]), False, 'works for [1,2,3,4]';
+ is equal-group([8,8,9,9,10,10,11,11]), True, 'works for [8,8,9,9,10,10,11,11]';
+}
+
+#| Take user provided numbers like 8,8,9,9,10,10,11,11
+multi sub MAIN(*@ints) {
+ say equal-group(@ints);
+}