diff options
| -rw-r--r-- | challenge-336/zapwai/perl/ch-1.pl | 26 | ||||
| -rw-r--r-- | challenge-336/zapwai/perl/ch-2.pl | 36 |
2 files changed, 62 insertions, 0 deletions
diff --git a/challenge-336/zapwai/perl/ch-1.pl b/challenge-336/zapwai/perl/ch-1.pl new file mode 100644 index 0000000000..2416dbbb36 --- /dev/null +++ b/challenge-336/zapwai/perl/ch-1.pl @@ -0,0 +1,26 @@ +use v5.38; + +sub proc(@ints) { + say "Input: @ints"; + my %f; + $f{$_}++ for (@ints); + my $o; + for my $k (keys %f) { + if ($f{$k} == 1) { + $o = "false"; + } + } + $o = "true" unless ($o); + say "Output: $o" +} + +my @ints = (1,1,2,2,2,2); +proc(@ints); +@ints = (1,1,1,2,2,2,3,3); +proc(@ints); +@ints = (5,5,5,5,5,5,7,7,7,7,7,7); +proc(@ints); +@ints = (1,2,3,4); +proc(@ints); +@ints = (8,8,9,9,10,10,11,11); +proc(@ints); diff --git a/challenge-336/zapwai/perl/ch-2.pl b/challenge-336/zapwai/perl/ch-2.pl new file mode 100644 index 0000000000..7557f4913e --- /dev/null +++ b/challenge-336/zapwai/perl/ch-2.pl @@ -0,0 +1,36 @@ +use v5.38; +use List::Util qw(sum); + +sub proc(@scores) { + say "Input: @scores"; + my @s; + my $si = 0; + for my $i (0 .. $#scores) { + if ($scores[$i] eq "C") { + pop @s; + $si--; + } elsif ($scores[$i] eq "D") { + push @s, 2*$s[$si-1]; + $si++; + } elsif ($scores[$i] eq "+") { + my $val = $s[$si-1] + $s[$si-2]; + push @s, $val; + $si++; + } else { + push @s, $scores[$i]; + $si++; + } + } + say "Output: " . sum(@s); +} + +my @scores = ("5","2","C","D","+"); +proc(@scores); +@scores = ("5","-2","4","C","D","9","+","+"); +proc(@scores); +@scores = ("7","D","D","C","+","3"); +proc(@scores); +@scores = ("-5","-10","+","D","C","+"); +proc(@scores); +@scores = ("3","6","+","D","C","8","+","D","-2","C","+"); +proc(@scores); |
