diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2023-10-22 23:49:10 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2023-10-22 23:49:10 +0800 |
| commit | eab858933ecbb710b070ee5e5c05cf3294e437ac (patch) | |
| tree | 1715bfee53790c4273bac498fddbfe50846b4fb3 | |
| parent | 552c97e0b3b2b4ab06c625b5277c2a5208c77aeb (diff) | |
| download | perlweeklychallenge-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.lsp | 10 | ||||
| -rw-r--r-- | challenge-239/cheok-yin-fung/perl/ch-1.pl | 13 | ||||
| -rw-r--r-- | challenge-239/cheok-yin-fung/perl/ch-2.pl | 27 |
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; + |
