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 | |
| 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')
| -rw-r--r-- | challenge-069/javier-luque/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-069/javier-luque/perl/ch-1.pl | 40 | ||||
| -rw-r--r-- | challenge-069/javier-luque/perl/ch-2.pl | 22 | ||||
| -rw-r--r-- | challenge-069/javier-luque/raku/ch-1.p6 | 31 | ||||
| -rw-r--r-- | challenge-069/javier-luque/raku/ch-2.p6 | 20 |
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; +} |
