diff options
| -rw-r--r-- | challenge-335/barroff/raku/ch-1.p6 | 29 | ||||
| -rw-r--r-- | challenge-336/barroff/raku/ch-1.p6 | 28 |
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); +} |
