aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Mahnke <andreas.mahnke@leuphana.de>2025-05-12 16:17:02 +0200
committerAndreas Mahnke <andreas.mahnke@leuphana.de>2025-05-12 16:20:56 +0200
commit7ffa0cb081359befabf2d8f38123fd39d46fd10e (patch)
tree0d7b456cd84fb3bc46c9ef0cfe7c335dc5b1f454
parent62f1ccaddfc5a65501df9cfdf528d28927fef410 (diff)
downloadperlweeklychallenge-club-7ffa0cb081359befabf2d8f38123fd39d46fd10e.tar.gz
perlweeklychallenge-club-7ffa0cb081359befabf2d8f38123fd39d46fd10e.tar.bz2
perlweeklychallenge-club-7ffa0cb081359befabf2d8f38123fd39d46fd10e.zip
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");