aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-05-13 13:20:02 +0100
committerGitHub <noreply@github.com>2025-05-13 13:20:02 +0100
commit0e6b0e59098d55cb7c2b944f16e9414a886092db (patch)
tree754964bf129db0d980683ceb26fae6d6def7ff62
parentbf3dd87c5cf071731d0ac84b4c047646721a1124 (diff)
parent7ffa0cb081359befabf2d8f38123fd39d46fd10e (diff)
downloadperlweeklychallenge-club-0e6b0e59098d55cb7c2b944f16e9414a886092db.tar.gz
perlweeklychallenge-club-0e6b0e59098d55cb7c2b944f16e9414a886092db.tar.bz2
perlweeklychallenge-club-0e6b0e59098d55cb7c2b944f16e9414a886092db.zip
Merge pull request #12015 from mahnkong/challenge-321
Challenge 321
-rw-r--r--challenge-321/mahnkong/perl/ch-1.pl19
-rw-r--r--challenge-321/mahnkong/perl/ch-2.pl24
2 files changed, 43 insertions, 0 deletions
diff --git a/challenge-321/mahnkong/perl/ch-1.pl b/challenge-321/mahnkong/perl/ch-1.pl
new file mode 100644
index 0000000000..7c4ccf577e
--- /dev/null
+++ b/challenge-321/mahnkong/perl/ch-1.pl
@@ -0,0 +1,19 @@
+use strict;
+use warnings;
+use feature 'signatures';
+use Test::More 'no_plan';
+
+sub run(@nums) {
+ return undef if scalar(@nums) % 2 != 0;
+
+ @nums = sort { $a <=> $b } @nums;
+ my %avgs;
+ while (scalar(@nums)) {
+ $avgs{(shift(@nums) + pop(@nums))/2} = undef;
+ }
+ return scalar(keys(%avgs));
+}
+
+is(run(1, 2, 4, 3, 5, 6), 1, "Example 1");
+is(run(0, 2, 4, 8, 3, 5), 2, "Example 2");
+is(run(7, 3, 1, 0, 5, 9), 2, "Example 3");
diff --git a/challenge-321/mahnkong/perl/ch-2.pl b/challenge-321/mahnkong/perl/ch-2.pl
new file mode 100644
index 0000000000..0f0aa596c6
--- /dev/null
+++ b/challenge-321/mahnkong/perl/ch-2.pl
@@ -0,0 +1,24 @@
+use strict;
+use warnings;
+use feature 'signatures';
+use Test::More 'no_plan';
+
+sub analyze($str) {
+ my @buffer;
+ foreach my $c (split //, $str) {
+ if ($c eq '#') {
+ pop @buffer if scalar(@buffer) > 0;
+ } else {
+ push @buffer, $c;
+ }
+ }
+ return join('', @buffer);
+}
+
+sub run($str1, $str2) {
+ return analyze($str1) eq analyze($str2) ? 1 : 0;
+}
+
+is(run("ab#c", "ad#c"), 1, "Example 1");
+is(run("ab##", "a#b#"), 1, "Example 1");
+is(run("a#b", "c"), 0, "Example 1");