diff options
| -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"); |
