aboutsummaryrefslogtreecommitdiff
path: root/challenge-239
diff options
context:
space:
mode:
authoririfkin <ianrifkin@ianrifkin.com>2023-10-17 12:47:45 -0400
committeririfkin <ianrifkin@ianrifkin.com>2023-10-17 12:47:45 -0400
commita0e274e254abd1ab66df85aee3d30a298a1653ba (patch)
treec787a8d210060ea467daccf5963c38126f91ed3d /challenge-239
parente1b396d2624e6b1a63d63e8b0fc2ce34cec781be (diff)
downloadperlweeklychallenge-club-a0e274e254abd1ab66df85aee3d30a298a1653ba.tar.gz
perlweeklychallenge-club-a0e274e254abd1ab66df85aee3d30a298a1653ba.tar.bz2
perlweeklychallenge-club-a0e274e254abd1ab66df85aee3d30a298a1653ba.zip
Trying to also do a raku submission
Diffstat (limited to 'challenge-239')
-rw-r--r--challenge-239/ianrifkin/raku/ch-1.raku25
-rw-r--r--challenge-239/ianrifkin/raku/ch-2.raku41
2 files changed, 66 insertions, 0 deletions
diff --git a/challenge-239/ianrifkin/raku/ch-1.raku b/challenge-239/ianrifkin/raku/ch-1.raku
new file mode 100644
index 0000000000..716f55bd8e
--- /dev/null
+++ b/challenge-239/ianrifkin/raku/ch-1.raku
@@ -0,0 +1,25 @@
+use v6;
+
+# Task 1: Same String
+# Write a script to find out if the word created by concatenating the array elements is the same.
+
+# Example 1
+my @arr1 = ("ab", "c");
+my @arr2 = ("a", "bc");
+check_equality(join('', @arr1), join('', @arr2));
+
+# Example 2
+@arr1 = ("ab", "c");
+@arr2 = ("ac", "b");
+check_equality(join('', @arr1), join('', @arr2));
+
+# Example 3
+@arr1 = ("ab", "cd", "e");
+@arr2 = ("abcde");
+check_equality(join('', @arr1), join('', @arr2));
+
+sub check_equality {
+ my ($arr1, $arr2) = @_;
+ say($arr1 eq $arr2);
+}
+
diff --git a/challenge-239/ianrifkin/raku/ch-2.raku b/challenge-239/ianrifkin/raku/ch-2.raku
new file mode 100644
index 0000000000..2d5e99529a
--- /dev/null
+++ b/challenge-239/ianrifkin/raku/ch-2.raku
@@ -0,0 +1,41 @@
+use v6;
+
+# Task 2: Consistent Strings
+# You are given an array of strings and allowed string having distinct characters.
+# A string is consistent if all characters in the string appear in the string allowed.
+
+
+# Example 1
+my @str = ("ad", "bd", "aaab", "baa", "badab");
+my $allowed = "ab";
+check_allowed($allowed, @str);
+
+# Example 2
+@str = ("a", "b", "c", "ab", "ac", "bc", "abc");
+$allowed = "abc";
+check_allowed($allowed, @str);
+
+# Example 3
+@str = ("cc", "acd", "b", "ba", "bac", "bad", "ac", "d");
+$allowed = "cad";
+check_allowed($allowed, @str);
+
+sub check_allowed {
+ my ($allowed, @str) = @_;
+ my $success_count = 0;
+ # Loop through each item in array of strings
+ item_loop: for @str {
+ # Loop through each character in string to check in allowed list
+ letters_loop: for $_.comb -> $letter {
+ LAST if $allowed.contains($letter) {
+ $success_count++; #increment success if the last letter is in allowed list
+ }
+ # try next str item if a letter doesn't match
+ letters_loop.last unless $allowed.contains($letter);
+
+ # by default if letter matches and isn't last try next letter
+ }
+ }
+ say($success_count);
+}
+