aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2023-10-22 23:49:10 +0800
committerCY Fung <fungcheokyin@gmail.com>2023-10-22 23:49:10 +0800
commiteab858933ecbb710b070ee5e5c05cf3294e437ac (patch)
tree1715bfee53790c4273bac498fddbfe50846b4fb3
parent552c97e0b3b2b4ab06c625b5277c2a5208c77aeb (diff)
downloadperlweeklychallenge-club-eab858933ecbb710b070ee5e5c05cf3294e437ac.tar.gz
perlweeklychallenge-club-eab858933ecbb710b070ee5e5c05cf3294e437ac.tar.bz2
perlweeklychallenge-club-eab858933ecbb710b070ee5e5c05cf3294e437ac.zip
Week 239: 2 Perl solutions, 1 Lisp solution
-rw-r--r--challenge-239/cheok-yin-fung/lisp/ch-1.lsp10
-rw-r--r--challenge-239/cheok-yin-fung/perl/ch-1.pl13
-rw-r--r--challenge-239/cheok-yin-fung/perl/ch-2.pl27
3 files changed, 50 insertions, 0 deletions
diff --git a/challenge-239/cheok-yin-fung/lisp/ch-1.lsp b/challenge-239/cheok-yin-fung/lisp/ch-1.lsp
new file mode 100644
index 0000000000..8875b5b058
--- /dev/null
+++ b/challenge-239/cheok-yin-fung/lisp/ch-1.lsp
@@ -0,0 +1,10 @@
+(equalp (concatenate 'string "ab" "c") (concatenate 'string "a" "bc"))
+
+(defun ss (arr1 arr2)
+ (equalp (format nil "~{~A~^~}" arr1) (format nil "~{~A~^~}" arr2)
+))
+
+(ss (list "a" "bc") (list "ab" "c"))
+(ss (list "ab" "c") (list "ac" "b"))
+(ss (list "ab" "cd" "e") (list "abcde"))
+
diff --git a/challenge-239/cheok-yin-fung/perl/ch-1.pl b/challenge-239/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..3be7cda7d0
--- /dev/null
+++ b/challenge-239/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,13 @@
+# The Weekly Challenge 239
+# Task 1 Same String
+use v5.30.0;
+use warnings;
+
+sub ss {
+ return (join "", $_[0]->@*) eq (join "", $_[1]->@*);
+}
+
+use Test::More tests=>3;
+ok ss(["ab", "c"], ["a", "bc"]);
+ok !ss(["ab", "c"], ["ac", "b"]);
+ok ss(["ab", "cd", "e"] ,["abcde"]);
diff --git a/challenge-239/cheok-yin-fung/perl/ch-2.pl b/challenge-239/cheok-yin-fung/perl/ch-2.pl
new file mode 100644
index 0000000000..b5a87d35e9
--- /dev/null
+++ b/challenge-239/cheok-yin-fung/perl/ch-2.pl
@@ -0,0 +1,27 @@
+# The Weekly Challenge 239
+# Task 2 Consistent Strings
+use v5.30.0;
+use warnings;
+use Set::Intersection;
+use List::Util qw/uniqstr/;
+sub cs {
+ my @str = $_[0]->@*;
+ my @allowed = split "", $_[1];
+ my $result = 0;
+ for my $string (@str) {
+ my @arr = uniqstr split "", $string;
+ my @int = get_intersection(\@arr, \@allowed);
+ my @check_ss = get_intersection(\@arr, \@int);
+ $result++ if
+ (join "", sort {$a cmp $b} @check_ss)
+ eq
+ (join "", sort {$a cmp $b} @arr);
+ }
+ return $result;
+}
+
+use Test::More tests=>3;
+ok cs(["ad", "bd", "aaab", "baa", "badab"], "ab") == 2;
+ok cs(["a", "b", "c", "ab", "ac", "bc", "abc"], "abc") == 7;
+ok cs(["cc", "acd", "b", "ba", "bac", "bad", "ac", "d"], "cad") == 4;
+