aboutsummaryrefslogtreecommitdiff
path: root/challenge-113/arne-sommer/perl/recreate-binary-tree-perl
blob: 6cdb10322f425fb9609f4797f78ddf128ead2337 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#! /usr/bin/env perl

use strict;
use warnings;
use feature 'say';

use Getopt::Long;
use List::Util qw(sum);

my $verbose = 0;

GetOptions("verbose" => \$verbose);

my $tree = shift(@$ARGV) // '1 | 2 3 | 4 * 5 6 | * 7';

my $sum = sum(grep(/\d/, split(/\s+/, $tree)));

say ": Sum: $sum" if $verbose;

my @elems;

for my $elem (split(/\s+/, $tree))
{
  $elem =~ /\d/
   ? push(@elems, $sum - $elem)
   : push(@elems, $elem);
}

say join(" ", @elems);