aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Skotheim <kjetil.skotheim@sikt.no>2024-02-19 02:28:18 +0100
committerKjetil Skotheim <kjetil.skotheim@sikt.no>2024-02-19 02:28:18 +0100
commit1739fb5fe04eccbc3b3cbf38bfd14460a1b34d10 (patch)
tree2d61622ec66839f7985ec2ffdf3d8a3cd161d7da
parent71c25e55bc7d4e6adaaad7659e88853b71009526 (diff)
downloadperlweeklychallenge-club-1739fb5fe04eccbc3b3cbf38bfd14460a1b34d10.tar.gz
perlweeklychallenge-club-1739fb5fe04eccbc3b3cbf38bfd14460a1b34d10.tar.bz2
perlweeklychallenge-club-1739fb5fe04eccbc3b3cbf38bfd14460a1b34d10.zip
https://theweeklychallenge.org/blog/perl-weekly-challenge-256/
-rw-r--r--challenge-256/kjetillll/perl/ch-1.pl28
-rw-r--r--challenge-256/kjetillll/perl/ch-2.pl18
2 files changed, 46 insertions, 0 deletions
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;