From 1739fb5fe04eccbc3b3cbf38bfd14460a1b34d10 Mon Sep 17 00:00:00 2001 From: Kjetil Skotheim Date: Mon, 19 Feb 2024 02:28:18 +0100 Subject: https://theweeklychallenge.org/blog/perl-weekly-challenge-256/ --- challenge-256/kjetillll/perl/ch-1.pl | 28 ++++++++++++++++++++++++++++ challenge-256/kjetillll/perl/ch-2.pl | 18 ++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 challenge-256/kjetillll/perl/ch-1.pl create mode 100644 challenge-256/kjetillll/perl/ch-2.pl diff --git a/challenge-256/kjetillll/perl/ch-1.pl b/challenge-256/kjetillll/perl/ch-1.pl new file mode 100644 index 0000000000..1b0074490e --- /dev/null +++ b/challenge-256/kjetillll/perl/ch-1.pl @@ -0,0 +1,28 @@ +sub max_pairs { + my %maybe; + my $pairs = 0; + for( @_ ) { + my $r = reverse; + if( $maybe{ $r } > 0 ) { + $maybe{ $r }--; + $pairs++; + } + else { + $maybe{ $_ }++; + } + } + $pairs +} + +use Test::More; +for ( + ["ab", "de", "ed", "bc" => 1], + ["aa", "ba", "cd", "ed" => 0], + ["uv", "qp", "st", "vu", "mn", "pq" => 2], + ["uv", "uv", "qp", "st", "vu", "mn", "pq" => 2], + ["uv", "uv", "qp", "st", "vu", "mn", "pq", "vu" => 3] +){ + my $want = pop @$_; + is( max_pairs(@$_), $want ); +} +done_testing; diff --git a/challenge-256/kjetillll/perl/ch-2.pl b/challenge-256/kjetillll/perl/ch-2.pl new file mode 100644 index 0000000000..7ccb052e76 --- /dev/null +++ b/challenge-256/kjetillll/perl/ch-2.pl @@ -0,0 +1,18 @@ +sub merge { + my($a, $b, $s) = @_; + $a =~ s/.//s ? merge($b, $a, $s.$&) : "$s$b" +} + +use Test::More; +for( + [ "abcd", "1234", "a1b2c3d4" ], + [ "abc", "12345", "a1b2c345" ], + [ "abcde", "123", "a1b2c3de" ], + [ "", "xyz", "xyz" ], + [ "123", "", "123" ], + [ "", "", "" ], +){ + my( $str1, $str2, $want ) = @$_; + is( merge( $str1, $str2), $want ); +} +done_testing; -- cgit