diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-13 09:38:54 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-07-13 09:38:54 +0100 |
| commit | 3cf79163a29b588b86cd694f6e197a2320d7e2a7 (patch) | |
| tree | 2b700bbc21a43824a670a332e9b9e057d51200b0 /challenge-069/javier-luque/perl | |
| parent | bf7ec3f38c6ffd95fa2de9d38cd2e841dbd5d57c (diff) | |
| download | perlweeklychallenge-club-3cf79163a29b588b86cd694f6e197a2320d7e2a7.tar.gz perlweeklychallenge-club-3cf79163a29b588b86cd694f6e197a2320d7e2a7.tar.bz2 perlweeklychallenge-club-3cf79163a29b588b86cd694f6e197a2320d7e2a7.zip | |
- Added solutions by Javier Luque.
Diffstat (limited to 'challenge-069/javier-luque/perl')
| -rw-r--r-- | challenge-069/javier-luque/perl/ch-1.pl | 40 | ||||
| -rw-r--r-- | challenge-069/javier-luque/perl/ch-2.pl | 22 |
2 files changed, 62 insertions, 0 deletions
diff --git a/challenge-069/javier-luque/perl/ch-1.pl b/challenge-069/javier-luque/perl/ch-1.pl new file mode 100644 index 0000000000..35820d42e5 --- /dev/null +++ b/challenge-069/javier-luque/perl/ch-1.pl @@ -0,0 +1,40 @@ +#!/usr/bin/perl +# Test: ./ch-1.pl 50 100 +use Modern::Perl; + +my $a = shift; +my $b = shift; +my @answers; + +die "Invalid inputs" + if ( !$a || !$b || $a > $b || + $a < 0 || $b > 10e15 ); + +# Process each number +for my $i ($a .. $b) { + my $orig = $i; + + # Check and remove 6/9, 9/6 0/0, 1/1, 8/8 pairs + my $search_length = length($i) / 2; + for (my $j = 0; $j < $search_length; $j++) { + my $p1 = substr $i, $j, 1; + my $p2 = substr $i, length($i) - $j - 1, 1; + + if ( ($p1 == 6 && $p2 == 9) || + ($p1 == 9 && $p2 == 6) || + ($p1 == 0 && $p2 == 0) || + ($p1 == 8 && $p2 == 8) || + ($p1 == 1 && $p2 == 1)) { + $i = substr $i, 1, length($i) - 2; + $j--; + $search_length--; + } else { + last; + } + } + + push @answers, $orig + unless ($i); +} + +say join ', ', @answers; diff --git a/challenge-069/javier-luque/perl/ch-2.pl b/challenge-069/javier-luque/perl/ch-2.pl new file mode 100644 index 0000000000..376b7182ee --- /dev/null +++ b/challenge-069/javier-luque/perl/ch-2.pl @@ -0,0 +1,22 @@ +#!/usr/bin/perl +# Test: ./ch-2.pl +use Modern::Perl; +use Test::More; + +is (s_thousand(''), '0', 'Test: Empty string'); +is (s_thousand('0'), '001', 'Test: 0'); +is (s_thousand('001'), '0010011', 'Test: 001'); +done_testing(); + +# s1000 +sub s_thousand { + my $string = shift; + return $string . "0" . s_switch(scalar reverse($string)); +} + +# Switch +sub s_switch { + my $string = shift; + $string =~ tr/01/10/; + return $string; +} |
