aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-053/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-053/jaldhar-h-vyas/perl/ch-1.pl57
-rwxr-xr-xchallenge-053/jaldhar-h-vyas/perl/ch-2.pl54
-rwxr-xr-xchallenge-053/jaldhar-h-vyas/raku/ch-1.p640
-rwxr-xr-xchallenge-053/jaldhar-h-vyas/raku/ch-2.p634
5 files changed, 186 insertions, 0 deletions
diff --git a/challenge-053/jaldhar-h-vyas/blog.txt b/challenge-053/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..9f4a3229d0
--- /dev/null
+++ b/challenge-053/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2020/03/perl_weekly_challenge_week_53.html
diff --git a/challenge-053/jaldhar-h-vyas/perl/ch-1.pl b/challenge-053/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..6386cfd33c
--- /dev/null
+++ b/challenge-053/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print <<"-usage-";
+Usage:
+ $PROGRAM_NAME <angle>
+
+ <angle> angle to rotate matrix (0, 90, 180, or 270)
+-usage-
+
+ exit(1);
+}
+
+sub rotate {
+ my ($angle) = @_;
+ my @matrix = (
+ [ 1, 2, 3 ],
+ [ 4, 5, 6 ],
+ [ 7, 8, 9 ],
+ );
+
+ my $side = scalar @matrix;
+
+ for (1 .. $angle / 90) {
+ for my $row (0 .. ($side / 2) - 1) {
+ for my $col ($row .. ($side - $row - 1) - 1) {
+ my $temp = $matrix[$row][$col];
+
+ $matrix[$row][$col] = $matrix[$side - 1 - $col][$row];
+
+ $matrix[$side - 1 - $col][$row] =
+ $matrix[$side - 1 - $row][$side - 1 - $col];
+
+ $matrix[$side - 1 - $row][$side - 1 - $col] =
+ $matrix[$col][$side - 1 - $row];
+
+ $matrix[$col][$side - 1 -$row] = $temp;
+ }
+ }
+ }
+
+ return @matrix;
+}
+
+my $angle = shift // usage();
+
+if ($angle != 90 && $angle != 180 && $angle != 270) {
+ usage();
+}
+
+for my $row (rotate($angle)) {
+ say '[ ', (join(q{, }, @{ $row })), ' ]';
+}
diff --git a/challenge-053/jaldhar-h-vyas/perl/ch-2.pl b/challenge-053/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..4550084961
--- /dev/null
+++ b/challenge-053/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print <<"-usage-";
+Usage:
+ $PROGRAM_NAME <n>
+
+ <n> length of vowel string to be generated from 1 to 5
+-usage-
+
+ exit(1);
+}
+
+sub generate {
+ my ($n) = @_;
+
+ my %rules = (
+ a => [qw/ e i /],
+ e => [qw/ i /],
+ i => [qw/ a e o u /],
+ o => [qw/ a u /],
+ u => [qw/ e o /]
+ );
+
+ my @generated;
+ for my $i (1 .. $n) {
+ if ($i == 1) {
+ @generated = sort keys %rules;
+ } else {
+ @generated = map {
+ my $e = $_;
+ map { $e . $_; } @{ $rules{substr $e, -1, 1} };
+ } @generated;
+ }
+ }
+
+ return @generated;
+}
+
+
+my $n = shift // usage();
+
+if ($n < 1 || $n > 5) {
+ usage();
+}
+
+for my $i (generate($n)) {
+ say $i;
+
+} \ No newline at end of file
diff --git a/challenge-053/jaldhar-h-vyas/raku/ch-1.p6 b/challenge-053/jaldhar-h-vyas/raku/ch-1.p6
new file mode 100755
index 0000000000..a7cef4c560
--- /dev/null
+++ b/challenge-053/jaldhar-h-vyas/raku/ch-1.p6
@@ -0,0 +1,40 @@
+#!/usr/bin/perl6
+
+sub rotate(Int $angle) {
+ my @matrix =
+ [ 1, 2, 3 ],
+ [ 4, 5, 6 ],
+ [ 7, 8, 9 ],
+ ;
+
+ my $side = @matrix.elems;
+
+ for (0 ..^ $angle / 90) {
+ for (0 ..^ $side / 2) -> $row {
+ for ($row ..^ $side - $row - 1) -> $col {
+ my $temp = @matrix[$row][$col];
+
+ @matrix[$row][$col] = @matrix[$side - 1 - $col][$row];
+
+ @matrix[$side - 1 - $col][$row] =
+ @matrix[$side - 1 - $row][$side - 1 - $col];
+
+ @matrix[$side - 1 - $row][$side - 1 - $col] =
+ @matrix[$col][$side - 1 - $row];
+
+ @matrix[$col][$side - 1 -$row] = $temp;
+ }
+ }
+ }
+
+ return @matrix;
+}
+
+multi sub MAIN (
+ Int $angle where { $angle == any (90, 180, 270) } #= angle to rotate matrix (0, 90, 180, or 270)
+) {
+
+ for rotate($angle) -> @row {
+ say '[ ', @row.join(q{, }), ' ]';
+ }
+} \ No newline at end of file
diff --git a/challenge-053/jaldhar-h-vyas/raku/ch-2.p6 b/challenge-053/jaldhar-h-vyas/raku/ch-2.p6
new file mode 100755
index 0000000000..ca730c5853
--- /dev/null
+++ b/challenge-053/jaldhar-h-vyas/raku/ch-2.p6
@@ -0,0 +1,34 @@
+#!/usr/bin/perl6
+
+sub generate(Int $n) {
+ my %rules = (
+ a => [< e i >],
+ e => [< i >],
+ i => [< a e o u >],
+ o => [< a u >],
+ u => [< e o >]
+ );
+
+ my @generated;
+ for (1 .. $n) -> $i {
+ if ($i == 1) {
+ @generated = %rules.keys.sort;
+ } else {
+ @generated = @generated.map({
+ my $e = $_;
+ | %rules{$e.substr(*-1, 1)}.values.map({ $e ~ $_; });
+ });
+ }
+ }
+
+ return @generated;
+}
+
+
+multi sub MAIN (
+ Int $n where { $n > 0 && $n < 6 } #= length of vowel string to be generated from 1 to 5
+) {
+ for generate($n) -> $i {
+ $i.say;
+ }
+} \ No newline at end of file