aboutsummaryrefslogtreecommitdiff
path: root/challenge-069/javier-luque/perl
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-07-13 09:38:54 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-07-13 09:38:54 +0100
commit3cf79163a29b588b86cd694f6e197a2320d7e2a7 (patch)
tree2b700bbc21a43824a670a332e9b9e057d51200b0 /challenge-069/javier-luque/perl
parentbf7ec3f38c6ffd95fa2de9d38cd2e841dbd5d57c (diff)
downloadperlweeklychallenge-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.pl40
-rw-r--r--challenge-069/javier-luque/perl/ch-2.pl22
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;
+}