From 7ffa0cb081359befabf2d8f38123fd39d46fd10e Mon Sep 17 00:00:00 2001 From: Andreas Mahnke Date: Mon, 12 May 2025 16:17:02 +0200 Subject: Challenge 321 --- challenge-321/mahnkong/perl/ch-1.pl | 19 +++++++++++++++++++ challenge-321/mahnkong/perl/ch-2.pl | 24 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 challenge-321/mahnkong/perl/ch-1.pl create mode 100644 challenge-321/mahnkong/perl/ch-2.pl 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"); -- cgit