aboutsummaryrefslogtreecommitdiff
path: root/challenge-042
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-042')
-rw-r--r--challenge-042/javier-luque/blog.txt1
-rw-r--r--challenge-042/javier-luque/perl/ch-1.pl14
-rw-r--r--challenge-042/javier-luque/perl/ch-2.pl38
-rw-r--r--challenge-042/javier-luque/raku/ch-1.p613
-rw-r--r--challenge-042/javier-luque/raku/ch-2.p629
5 files changed, 95 insertions, 0 deletions
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);
+}