From cc6f5e37eaa94165f15a8fb6a9a36c1425dccad2 Mon Sep 17 00:00:00 2001 From: Javier Luque Date: Wed, 12 Aug 2020 18:40:53 +0100 Subject: Solutions to challenge 73 - Javier Luque --- challenge-073/javier-luque/blog.txt | 1 + challenge-073/javier-luque/perl/ch-1.pl | 14 ++++++++++++++ challenge-073/javier-luque/perl/ch-2.pl | 29 +++++++++++++++++++++++++++++ challenge-073/javier-luque/raku/ch-1.p6 | 12 ++++++++++++ challenge-073/javier-luque/raku/ch-2.p6 | 27 +++++++++++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 challenge-073/javier-luque/blog.txt create mode 100644 challenge-073/javier-luque/perl/ch-1.pl create mode 100644 challenge-073/javier-luque/perl/ch-2.pl create mode 100644 challenge-073/javier-luque/raku/ch-1.p6 create mode 100644 challenge-073/javier-luque/raku/ch-2.p6 diff --git a/challenge-073/javier-luque/blog.txt b/challenge-073/javier-luque/blog.txt new file mode 100644 index 0000000000..dceaed08a5 --- /dev/null +++ b/challenge-073/javier-luque/blog.txt @@ -0,0 +1 @@ +https://perlchallenges.wordpress.com/2020/08/12/perl-weekly-challenge-073/ diff --git a/challenge-073/javier-luque/perl/ch-1.pl b/challenge-073/javier-luque/perl/ch-1.pl new file mode 100644 index 0000000000..27572a7589 --- /dev/null +++ b/challenge-073/javier-luque/perl/ch-1.pl @@ -0,0 +1,14 @@ +#!/usr/bin/perl +# Test: ./ch-1.pl +use Modern::Perl; +use List::Util qw /min/; + +my @out; +my @A = (1, 5, 0, 2, 9, 3, 7, 6, 4, 8); +my $S = 3; + +for my $i (2 .. scalar(@A) - 1) { + push @out, min $A[$i], $A[$i - 1], $A[$i - 2]; +} + +say '(' . (join ', ', @out) . ')'; diff --git a/challenge-073/javier-luque/perl/ch-2.pl b/challenge-073/javier-luque/perl/ch-2.pl new file mode 100644 index 0000000000..79f1f52b3c --- /dev/null +++ b/challenge-073/javier-luque/perl/ch-2.pl @@ -0,0 +1,29 @@ +#!/usr/bin/perl +# Test: ./ch-2.pl +use Modern::Perl; + +say smallest_neighbor(7, 8, 3, 12, 10); +say smallest_neighbor(4, 6, 5); + +sub smallest_neighbor { + my @A = @_; + my @out; + my $smallest_so_far; + + for my $i (0 .. scalar(@A) - 1) { + if ( defined($smallest_so_far) && + $A[$i] > $smallest_so_far ) { + push @out, $smallest_so_far; + } else { + push @out, 0; + } + + $smallest_so_far = $A[$i] + unless (defined($smallest_so_far)); + + $smallest_so_far = $A[$i] + if ($smallest_so_far > $A[$i]); + } + + return '(' . (join ', ', @out) . ')'; +} diff --git a/challenge-073/javier-luque/raku/ch-1.p6 b/challenge-073/javier-luque/raku/ch-1.p6 new file mode 100644 index 0000000000..647df59b6e --- /dev/null +++ b/challenge-073/javier-luque/raku/ch-1.p6 @@ -0,0 +1,12 @@ +# Test: perl6 ch-1.p6 +sub MAIN() { + my @out; + my @A = (1, 5, 0, 2, 9, 3, 7, 6, 4, 8); + my $S = 3; + + for (2 .. @A.elems - 1) -> $i { + push @out, min @A[$i], @A[$i - 1], @A[$i - 2]; + } + + say '(' ~ @out.join(", ") ~ ')'; +} diff --git a/challenge-073/javier-luque/raku/ch-2.p6 b/challenge-073/javier-luque/raku/ch-2.p6 new file mode 100644 index 0000000000..ec1881c41a --- /dev/null +++ b/challenge-073/javier-luque/raku/ch-2.p6 @@ -0,0 +1,27 @@ +# Test: perl6 ch-2.p6 +sub MAIN() { + say smallest-neighbor((7, 8, 3, 12, 10)); + say smallest-neighbor((4, 6, 5)); +} + +sub smallest-neighbor(@A) { + my @out; + my $smallest_so_far; + + for (0 .. @A.elems - 1) -> $i { + if ( defined($smallest_so_far) && + @A[$i] > $smallest_so_far ) { + @out.push($smallest_so_far); + } else { + @out.push(0); + } + + $smallest_so_far = @A[$i] + unless (defined($smallest_so_far)); + + $smallest_so_far = @A[$i] + if ($smallest_so_far > @A[$i]); + } + + return '(' ~ @out.join(', ') ~ ')'; +} -- cgit