aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Westerberg <drclaw@mac.com>2019-12-17 07:43:44 +1000
committerRuben Westerberg <drclaw@mac.com>2019-12-17 07:43:44 +1000
commit88b62335e7b5952402e42ccb90c67eee3048f49d (patch)
treec3b939e5842ad5f20b115e99d588534bb043aa11
parentfc713a169d1ce9afdf187e54cf953afa8f2be16d (diff)
downloadperlweeklychallenge-club-88b62335e7b5952402e42ccb90c67eee3048f49d.tar.gz
perlweeklychallenge-club-88b62335e7b5952402e42ccb90c67eee3048f49d.tar.bz2
perlweeklychallenge-club-88b62335e7b5952402e42ccb90c67eee3048f49d.zip
Added ch-1.pl and ch-2.pl
-rwxr-xr-xchallenge-039/ruben-westerberg/perl/ch-1.pl19
-rwxr-xr-xchallenge-039/ruben-westerberg/perl/ch-2.pl34
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";