diff options
| author | Ruben Westerberg <drclaw@mac.com> | 2019-12-17 07:43:44 +1000 |
|---|---|---|
| committer | Ruben Westerberg <drclaw@mac.com> | 2019-12-17 07:43:44 +1000 |
| commit | 88b62335e7b5952402e42ccb90c67eee3048f49d (patch) | |
| tree | c3b939e5842ad5f20b115e99d588534bb043aa11 | |
| parent | fc713a169d1ce9afdf187e54cf953afa8f2be16d (diff) | |
| download | perlweeklychallenge-club-88b62335e7b5952402e42ccb90c67eee3048f49d.tar.gz perlweeklychallenge-club-88b62335e7b5952402e42ccb90c67eee3048f49d.tar.bz2 perlweeklychallenge-club-88b62335e7b5952402e42ccb90c67eee3048f49d.zip | |
Added ch-1.pl and ch-2.pl
| -rwxr-xr-x | challenge-039/ruben-westerberg/perl/ch-1.pl | 19 | ||||
| -rwxr-xr-x | challenge-039/ruben-westerberg/perl/ch-2.pl | 34 |
2 files changed, 53 insertions, 0 deletions
diff --git a/challenge-039/ruben-westerberg/perl/ch-1.pl b/challenge-039/ruben-westerberg/perl/ch-1.pl new file mode 100755 index 0000000000..c56b887697 --- /dev/null +++ b/challenge-039/ruben-westerberg/perl/ch-1.pl @@ -0,0 +1,19 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use List::Util qw<min max>; + +my @times=map { my @o;while(/(\d{2}):(\d{2})/g){ push @o,$1*60+$2}; @o} <DATA>; +printf "Lights on for %d minutes\n", max(@times)-min(@times); + +__DATA__ +1) Alex IN: 09:10 OUT: 09:45 +2) Arnold IN: 09:15 OUT: 09:33 +3) Bob IN: 09:22 OUT: 09:55 +4) Charlie IN: 09:25 OUT: 10:05 +5) Steve IN: 09:33 OUT: 10:01 +6) Roger IN: 09:44 OUT: 10:12 +7) David IN: 09:57 OUT: 10:23 +8) Neil IN: 10:01 OUT: 10:19 +9) Chris IN: 10:10 OUT: 11:00 diff --git a/challenge-039/ruben-westerberg/perl/ch-2.pl b/challenge-039/ruben-westerberg/perl/ch-2.pl new file mode 100755 index 0000000000..ba5d34dfba --- /dev/null +++ b/challenge-039/ruben-westerberg/perl/ch-2.pl @@ -0,0 +1,34 @@ +#!/usr/bin/env perl + +my $expression=$ARGV[0]//"2 3 + 10 * 10 - 4 /"; +my @stack; +$expression=~s/ +/ /g; +print "Input expression: $expression\n"; +for (split " ", $expression) { + die "Error in input expression" if !/[\-+]?\d+(\.\d+)*/ && !/[+\-*\/]/; + for ($_) { + if ($_ eq "+") { + my @opds=splice @stack,0,2; + push @stack, @opds[0]+@opds[1]; + last; + } + if ($_ eq "-") { + my @opds=splice @stack,0,2; + push @stack, @opds[0]-@opds[1]; + last; + } + if ($_ eq "*") { + my @opds=splice @stack,0,2; + push @stack, @opds[0]*@opds[1]; + last; + } + if ($_ eq "/") { + my @opds=splice @stack,0,2; + push @stack, @opds[0]/@opds[1]; + last; + } + push @stack, $_; + + } +} +print "Result: @stack\n"; |
