diff options
| author | Andreas Mahnke <andreas.mahnke@leuphana.de> | 2025-05-12 16:17:02 +0200 |
|---|---|---|
| committer | Andreas Mahnke <andreas.mahnke@leuphana.de> | 2025-05-12 16:20:56 +0200 |
| commit | 7ffa0cb081359befabf2d8f38123fd39d46fd10e (patch) | |
| tree | 0d7b456cd84fb3bc46c9ef0cfe7c335dc5b1f454 | |
| parent | 62f1ccaddfc5a65501df9cfdf528d28927fef410 (diff) | |
| download | perlweeklychallenge-club-7ffa0cb081359befabf2d8f38123fd39d46fd10e.tar.gz perlweeklychallenge-club-7ffa0cb081359befabf2d8f38123fd39d46fd10e.tar.bz2 perlweeklychallenge-club-7ffa0cb081359befabf2d8f38123fd39d46fd10e.zip | |
Challenge 321
| -rw-r--r-- | challenge-321/mahnkong/perl/ch-1.pl | 19 | ||||
| -rw-r--r-- | challenge-321/mahnkong/perl/ch-2.pl | 24 |
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"); |
