aboutsummaryrefslogtreecommitdiff
path: root/challenge-057/mohammad-anwar/perl
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-04-24 19:36:40 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-04-24 19:36:40 +0100
commitb2e8460aebb653fdd4abae43f8ac8e3114a6e22b (patch)
tree19f0d1908d3e867a551aff4628e12d038ce9b53b /challenge-057/mohammad-anwar/perl
parent7271a79c190571b108dbd00b3b7e6383f05111f3 (diff)
downloadperlweeklychallenge-club-b2e8460aebb653fdd4abae43f8ac8e3114a6e22b.tar.gz
perlweeklychallenge-club-b2e8460aebb653fdd4abae43f8ac8e3114a6e22b.tar.bz2
perlweeklychallenge-club-b2e8460aebb653fdd4abae43f8ac8e3114a6e22b.zip
- Added Perl solutions to Invert Tree task.
Diffstat (limited to 'challenge-057/mohammad-anwar/perl')
-rw-r--r--challenge-057/mohammad-anwar/perl/ch-1.pl32
-rw-r--r--challenge-057/mohammad-anwar/perl/ch-1a.pl57
2 files changed, 89 insertions, 0 deletions
diff --git a/challenge-057/mohammad-anwar/perl/ch-1.pl b/challenge-057/mohammad-anwar/perl/ch-1.pl
new file mode 100644
index 0000000000..874699446c
--- /dev/null
+++ b/challenge-057/mohammad-anwar/perl/ch-1.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Data::Dump qw(dump);
+
+my $tree = {
+ 1 => [ [ 2, [ [ 4 ],
+ [ 5 ],
+ ],
+ ],
+ [ 3, [ [ 6 ],
+ [ 7 ],
+ ],
+ ],
+ ],
+};
+
+print sprintf("Before: %s\n", dump($tree));
+mirror($tree->{1});
+print sprintf("After : %s\n", dump($tree));
+
+sub mirror {
+ my ($branch) = @_;
+
+ ($branch->[0], $branch->[1]) = ($branch->[1], $branch->[0]);
+ mirror($branch->[0][1]) if defined $branch->[0][1];
+ mirror($branch->[1][1]) if defined $branch->[1][1];
+
+ return $branch;
+}
diff --git a/challenge-057/mohammad-anwar/perl/ch-1a.pl b/challenge-057/mohammad-anwar/perl/ch-1a.pl
new file mode 100644
index 0000000000..9418c608aa
--- /dev/null
+++ b/challenge-057/mohammad-anwar/perl/ch-1a.pl
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use Data::Dump qw(dump);
+
+my $tree_1 = {
+ 1 => [ [ 2,
+ [ [ 4 ],
+ [ 5 ],
+ ],
+ ],
+ [ 3,
+ [ [ 6 ],
+ [ 7 ],
+ ],
+ ],
+ ],
+};
+
+my $tree_2 = {
+ 1 => [ [ 2,
+ [ [ 4 ],
+ [ 5 ],
+ ],
+ ],
+ [ 3,
+ [ [ 6 ],
+ [ 7,
+ [ [ 8 ],
+ [ 9 ],
+ ],
+ ],
+ ],
+ ],
+ ],
+};
+
+mirror($tree_1->{1});
+mirror($tree_2->{1});
+
+is (dump($tree_1), "{ 1 => [[3, [[7], [6]]], [2, [[5], [4]]]] }", "testing tree 1");
+is (dump($tree_2), "{ 1 => [[3, [[7, [[9], [8]]], [6]]], [2, [[5], [4]]]] }", "testing tree 2");
+
+done_testing;
+
+sub mirror {
+ my ($branch) = @_;
+
+ ($branch->[0], $branch->[1]) = ($branch->[1], $branch->[0]);
+ mirror($branch->[0][1]) if defined $branch->[0][1];
+ mirror($branch->[1][1]) if defined $branch->[1][1];
+
+ return $branch;
+}