aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;