aboutsummaryrefslogtreecommitdiff
path: root/challenge-256/barroff/perl/ch-1.pl
blob: 22ab89733cc7354469dedd1e484f1ab8680a8398 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env perl

use v5.38;

sub maximum_pairs (@words) {
    use List::Util qw/any/;
    my @non_palindromes = grep { $_ ne reverse $_ } @words;
    my @reversed_words  = map  { scalar reverse $_ } @non_palindromes;
    grep( {
            my $outer = $_;
            any { $outer eq $_ } @words
    } @reversed_words ) / 2;
}

sub MAIN() {
    if ( @ARGV > 1 ) {

        #| Run on command line argument
        say maximum_pairs( @ARGV[ 1 .. -1 ] );
    }
    else {
        #| Run test cases
        use Test2::V0 qw( is plan );
        plan 3;

        is maximum_pairs( "ab", "de", "ed", "bc" ), 1,
          'works for "ab", "de", "ed", "bc"';
        is maximum_pairs( "aa", "ba", "cd", "ed" ), 0,
          'works for "aa", "ba", "cd", "ed"';
        is maximum_pairs( "uv", "qp", "st", "vu", "mn", "pq" ), 2,
          'works for "uv", "qp", "st", "vu", "mn", "pq"';
    }
}

MAIN();