diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-04-24 19:36:40 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-04-24 19:36:40 +0100 |
| commit | b2e8460aebb653fdd4abae43f8ac8e3114a6e22b (patch) | |
| tree | 19f0d1908d3e867a551aff4628e12d038ce9b53b /challenge-057/mohammad-anwar/perl | |
| parent | 7271a79c190571b108dbd00b3b7e6383f05111f3 (diff) | |
| download | perlweeklychallenge-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.pl | 32 | ||||
| -rw-r--r-- | challenge-057/mohammad-anwar/perl/ch-1a.pl | 57 |
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; +} |
