diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-07-20 11:18:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-20 11:18:22 +0100 |
| commit | 48817147fca9e8b15e02473eb24f75ed633319c5 (patch) | |
| tree | 37ec456dff146d56c28591108e0250e46e280e58 | |
| parent | fd00a10caf7788ec7bc40fb0809a66873594995f (diff) | |
| parent | f7688a98c6ebed5f46b9c57209607c8adf2f772b (diff) | |
| download | perlweeklychallenge-club-48817147fca9e8b15e02473eb24f75ed633319c5.tar.gz perlweeklychallenge-club-48817147fca9e8b15e02473eb24f75ed633319c5.tar.bz2 perlweeklychallenge-club-48817147fca9e8b15e02473eb24f75ed633319c5.zip | |
Merge pull request #1962 from JavierLuque/javier/solutions-70
Solutions challenge 70 - javier luque
| -rw-r--r-- | challenge-070/javier-luque/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-070/javier-luque/perl/ch-1.pl | 19 | ||||
| -rw-r--r-- | challenge-070/javier-luque/perl/ch-2.pl | 29 | ||||
| -rw-r--r-- | challenge-070/javier-luque/raku/ch-1.p6 | 17 | ||||
| -rw-r--r-- | challenge-070/javier-luque/raku/ch-2.p6 | 27 |
5 files changed, 93 insertions, 0 deletions
diff --git a/challenge-070/javier-luque/blog.txt b/challenge-070/javier-luque/blog.txt new file mode 100644 index 0000000000..0cabf620ee --- /dev/null +++ b/challenge-070/javier-luque/blog.txt @@ -0,0 +1 @@ +https://perlchallenges.wordpress.com/2020/07/20/perl-weekly-challenge-070/ diff --git a/challenge-070/javier-luque/perl/ch-1.pl b/challenge-070/javier-luque/perl/ch-1.pl new file mode 100644 index 0000000000..31ced7e1ce --- /dev/null +++ b/challenge-070/javier-luque/perl/ch-1.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl +# Test: ./ch-1.pl +use Modern::Perl; + +say swap_chars('perlandraku', 3, 4); + +sub swap_chars { + my ($S, $C, $O) = @_; + my @s = split('', $S); + my $N = scalar(@s) - 1; + + for (my $i = 1; $i <= $C; $i++) { + my $temp = $s[$i % $N]; + $s[$i % $N] = $s[($i + $O) % $N]; + $s[($i + $O) % $N] = $temp; + } + + return join '', @s; +} diff --git a/challenge-070/javier-luque/perl/ch-2.pl b/challenge-070/javier-luque/perl/ch-2.pl new file mode 100644 index 0000000000..2adf21f0c7 --- /dev/null +++ b/challenge-070/javier-luque/perl/ch-2.pl @@ -0,0 +1,29 @@ +#!/usr/bin/perl +# Test: ./ch-2.pl +use Modern::Perl; + +say gray_code(4); + +sub gray_code { + my $N = shift; + my @S1 = ('00','01','11','10'); + + while ($N > 2) { + # Flip the array + my @S2 = reverse @S1; + + # Prefix + @S1 = map { '0' . $_ } @S1; + @S2 = map { '1' . $_ } @S2; + + # Concatenate + push @S1, @S2; + + $N--; + } + + # Convert to decimal + @S1 = map { oct("0b" . $_) } @S1; + + return '[' . (join ', ', @S1) . ']'; +} diff --git a/challenge-070/javier-luque/raku/ch-1.p6 b/challenge-070/javier-luque/raku/ch-1.p6 new file mode 100644 index 0000000000..41086439c0 --- /dev/null +++ b/challenge-070/javier-luque/raku/ch-1.p6 @@ -0,0 +1,17 @@ +# Test: perl6 ch-1.p6 +sub MAIN() { + say swap-chars('perlandraku', 3, 4); +} + +sub swap-chars( Str $S, Int $C, Int $O) { + my $N = $S.chars; + my @s = $S.split('', :skip-empty); + + loop (my $i = 1; $i <= $C; $i++) { + my $temp = @s[$i % $N]; + @s[$i % $N] = @s[($i + $O) % $N]; + @s[($i + $O) % $N] = $temp; + } + + return @s.join(''); +} diff --git a/challenge-070/javier-luque/raku/ch-2.p6 b/challenge-070/javier-luque/raku/ch-2.p6 new file mode 100644 index 0000000000..745f2f2f8c --- /dev/null +++ b/challenge-070/javier-luque/raku/ch-2.p6 @@ -0,0 +1,27 @@ +# Test: perl6 ch-2.p6 +sub MAIN() { + say gray-code(4); +} + +sub gray-code(Int $N is copy where $N >= 2 && $N <=5 ) { + my @S1 = ('00','01','11','10'); + + while ($N > 2) { + # Flip the array + my @S2 = @S1.reverse; + + # Prefix + @S1 = @S1.map({ '0' ~ $_ }); + @S2 = @S2.map({ '1' ~ $_ }); + + # Concatenate + @S1 = flat @S1, @S2; + + $N--; + } + + # Convert to decimal + @S1 = @S1.map({ "0b$_".Int }); + + return @S1.perl; +} |
