aboutsummaryrefslogtreecommitdiff
path: root/challenge-069
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
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')
-rw-r--r--challenge-069/javier-luque/blog.txt1
-rw-r--r--challenge-069/javier-luque/perl/ch-1.pl40
-rw-r--r--challenge-069/javier-luque/perl/ch-2.pl22
-rw-r--r--challenge-069/javier-luque/raku/ch-1.p631
-rw-r--r--challenge-069/javier-luque/raku/ch-2.p620
5 files changed, 114 insertions, 0 deletions
diff --git a/challenge-069/javier-luque/blog.txt b/challenge-069/javier-luque/blog.txt
new file mode 100644
index 0000000000..35dfeb8344
--- /dev/null
+++ b/challenge-069/javier-luque/blog.txt
@@ -0,0 +1 @@
+https://perlchallenges.wordpress.com/2020/07/13/perl-weekly-challenge-069/
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;
+}
diff --git a/challenge-069/javier-luque/raku/ch-1.p6 b/challenge-069/javier-luque/raku/ch-1.p6
new file mode 100644
index 0000000000..9c206cce96
--- /dev/null
+++ b/challenge-069/javier-luque/raku/ch-1.p6
@@ -0,0 +1,31 @@
+# Test: perl6 ch-1.p6
+sub MAIN(Int $a where $a > 0, Int $b where $b < 10e15) {
+ my @answers;
+ for ($a .. $b) -> $orig_i {
+ my $i = $orig_i.Str;
+
+ # Check and remove 6/9, 9/6 0/0, 1/1, 8/8 pairs
+ my $search_length = $i.chars / 2;
+ loop (my $j = 0; $j < $search_length; $j++) {
+ my $p1 = $i.substr($j, 1);
+ my $p2 = $i.substr($i.chars - $j - 1, 1);
+
+ if ( ($p1 eq '6' && $p2 eq '9') ||
+ ($p1 eq '9' && $p2 eq '6') ||
+ ($p1 eq '0' && $p2 eq '0') ||
+ ($p1 eq '8' && $p2 eq '8') ||
+ ($p1 eq '1' && $p2 eq '1')) {
+ $i = $i.substr(1, $i.chars - 2);
+ $j--;
+ $search_length--;
+ } else {
+ last;
+ }
+
+ push @answers, $orig_i
+ unless ($i);
+ }
+ }
+
+ say @answers.join(', ' );
+}
diff --git a/challenge-069/javier-luque/raku/ch-2.p6 b/challenge-069/javier-luque/raku/ch-2.p6
new file mode 100644
index 0000000000..d78ecf46ea
--- /dev/null
+++ b/challenge-069/javier-luque/raku/ch-2.p6
@@ -0,0 +1,20 @@
+# Test: perl6 ch-2.p6
+use Test;
+
+sub MAIN() {
+ 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(Str $s) {
+ return $s ~ "0" ~ s-switch($s.flip);
+}
+
+# Switch
+sub s-switch(Str $s is copy) {
+ $s ~~ tr/01/10/;
+ return $s;
+}