diff options
| author | drclaw1394 <drclaw@mac.com> | 2020-01-07 16:30:27 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-07 16:30:27 +1000 |
| commit | 896b7ced42b40eb3ee62c38d237d4d07df51f169 (patch) | |
| tree | 73af7aec5c7a251f6f5030fa9a7e39ae412af123 /challenge-042/javier-luque | |
| parent | 7649e23d2b150b36cdd134bcf17125f3b9696ada (diff) | |
| parent | e015238170e27c690e4f46646b6687f600fd0c59 (diff) | |
| download | perlweeklychallenge-club-896b7ced42b40eb3ee62c38d237d4d07df51f169.tar.gz perlweeklychallenge-club-896b7ced42b40eb3ee62c38d237d4d07df51f169.tar.bz2 perlweeklychallenge-club-896b7ced42b40eb3ee62c38d237d4d07df51f169.zip | |
Merge pull request #41 from manwar/master
Update to w42
Diffstat (limited to 'challenge-042/javier-luque')
| -rw-r--r-- | challenge-042/javier-luque/README | 1 | ||||
| -rw-r--r-- | challenge-042/javier-luque/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-042/javier-luque/perl/ch-1.pl | 14 | ||||
| -rw-r--r-- | challenge-042/javier-luque/perl/ch-2.pl | 38 | ||||
| -rw-r--r-- | challenge-042/javier-luque/raku/ch-1.p6 | 13 | ||||
| -rw-r--r-- | challenge-042/javier-luque/raku/ch-2.p6 | 29 |
6 files changed, 96 insertions, 0 deletions
diff --git a/challenge-042/javier-luque/README b/challenge-042/javier-luque/README new file mode 100644 index 0000000000..887e7fc81a --- /dev/null +++ b/challenge-042/javier-luque/README @@ -0,0 +1 @@ +Solutions by Javier Luque. diff --git a/challenge-042/javier-luque/blog.txt b/challenge-042/javier-luque/blog.txt new file mode 100644 index 0000000000..b23134bfd4 --- /dev/null +++ b/challenge-042/javier-luque/blog.txt @@ -0,0 +1 @@ +https://perlchallenges.wordpress.com/2020/01/06/perl-weekly-challenge-042/ diff --git a/challenge-042/javier-luque/perl/ch-1.pl b/challenge-042/javier-luque/perl/ch-1.pl new file mode 100644 index 0000000000..5a58151aa2 --- /dev/null +++ b/challenge-042/javier-luque/perl/ch-1.pl @@ -0,0 +1,14 @@ +#!/usr/bin/perl +# Test: ./ch-1.pl +use strict; +use warnings; +use feature qw /say/; + +for my $i (1..50) { + say 'Decimal ' . $i . + ' = Octal ' . to_octal($i); +} + +sub to_octal { + return sprintf('%o', shift); +} diff --git a/challenge-042/javier-luque/perl/ch-2.pl b/challenge-042/javier-luque/perl/ch-2.pl new file mode 100644 index 0000000000..04a6078fd6 --- /dev/null +++ b/challenge-042/javier-luque/perl/ch-2.pl @@ -0,0 +1,38 @@ +#!/usr/bin/perl +# test: ./ch2.pl +use strict; +use warnings; +use feature qw /say/; +use constant { + MAX_STRING_LENGTH => 4 +}; + +for my $i ( 1 .. 20 ) { + my $string = generate_random_string(); + my $ok = (validate_string($string)) ? 'OK ' : 'NOT OK'; + say $string . ' - ' . $ok; +} + +sub generate_random_string { + my $length = int(rand(MAX_STRING_LENGTH - 1) + 2); + my $string; + + for my $i (1 .. $length ) { + $string .= (int(rand(2))) ? '(' : ')'; + } + + return $string; +} + +sub validate_string { + my $open_p; + + for my $char (split('', shift)) { + $open_p++ if ($char eq '('); + $open_p-- if ($char eq ')'); + + return 0 if ($open_p < 0); + } + + return ($open_p == 0); +} diff --git a/challenge-042/javier-luque/raku/ch-1.p6 b/challenge-042/javier-luque/raku/ch-1.p6 new file mode 100644 index 0000000000..97022c1f81 --- /dev/null +++ b/challenge-042/javier-luque/raku/ch-1.p6 @@ -0,0 +1,13 @@ +# Test: perl6 ch-1.p6 +use v6.d; + +sub MAIN() { + for (1..50) -> $i { + say 'Decimal ' ~ $i ~ + ' = Octal ' ~ to-octal($i); + } +} + +sub to-octal(Int $i) { + return sprintf('%o', $i); +} diff --git a/challenge-042/javier-luque/raku/ch-2.p6 b/challenge-042/javier-luque/raku/ch-2.p6 new file mode 100644 index 0000000000..8d19010e59 --- /dev/null +++ b/challenge-042/javier-luque/raku/ch-2.p6 @@ -0,0 +1,29 @@ +# Test: perl6 ./ch-2.p6 +use v6.d; +constant $MAX_STRING_LENGTH = 4; + +sub MAIN () { + for ( 1 .. 20 ) { + my $string = generate-random-string(); + my $ok = (validate-string($string)) ?? 'OK ' !! 'NOT OK'; + say $string ~ ' - ' ~ $ok; + } +} + +sub generate-random-string { + return <( )>.roll( + Int((2 .. $MAX_STRING_LENGTH + 1).rand) + ).join; +} + +sub validate-string(Str $word) { + my $open_p; + + for $word.comb -> $letter { + $open_p++ if ($letter eq '('); + $open_p-- if ($letter eq ')'); + return 0 if ($open_p < 0); + } + + return ($open_p == 0); +} |
