aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Westerberg <drclaw@mac.com>2019-12-17 22:20:18 +1000
committerRuben Westerberg <drclaw@mac.com>2019-12-17 22:20:18 +1000
commitce39059319051b6945a0fa6fe3dd1c82da69e35a (patch)
treef94cbe150b7525ffa982f6e0ef3ed759d0a4bb33
parent4467e7406d93113bd8770780076ac90f29e4354d (diff)
downloadperlweeklychallenge-club-ce39059319051b6945a0fa6fe3dd1c82da69e35a.tar.gz
perlweeklychallenge-club-ce39059319051b6945a0fa6fe3dd1c82da69e35a.tar.bz2
perlweeklychallenge-club-ce39059319051b6945a0fa6fe3dd1c82da69e35a.zip
added ch-1.p6 ch-2.p6
-rw-r--r--challenge-039/ruben-westerberg/README5
-rwxr-xr-xchallenge-039/ruben-westerberg/perl/ch-2.pl2
-rwxr-xr-xchallenge-039/ruben-westerberg/raku/ch-1.p620
-rwxr-xr-xchallenge-039/ruben-westerberg/raku/ch-2.p625
4 files changed, 49 insertions, 3 deletions
diff --git a/challenge-039/ruben-westerberg/README b/challenge-039/ruben-westerberg/README
index eabb2c8160..ec2a5fe038 100644
--- a/challenge-039/ruben-westerberg/README
+++ b/challenge-039/ruben-westerberg/README
@@ -2,11 +2,12 @@ Solution by Ruben Westerberg
ch-1.pl and ch-1.p6
===================
-Run the program with at least 1 command line argument (7 digit number) to validated and generate a date for each argument.
+Run program to process guest log and display the amount of time lights are on
ch-2.pl and ch-2.p6
===================
-Run the program to randomly select 7 tiles from a bag and display the possible words and associated score which could be created from the 7 tiles
+Run the program with a RPN formated expression ( + - * / supported) as an argument (don't forget to quote).
+Output is the result of the RPN expression. A default expression is used if no arguments are present
diff --git a/challenge-039/ruben-westerberg/perl/ch-2.pl b/challenge-039/ruben-westerberg/perl/ch-2.pl
index c757cd0f98..db2f6f66ca 100755
--- a/challenge-039/ruben-westerberg/perl/ch-2.pl
+++ b/challenge-039/ruben-westerberg/perl/ch-2.pl
@@ -5,7 +5,7 @@ my @stack;
$expression=~s/ +/ /g;
print "Input expression: $expression\n";
for (split " ", $expression) {
- die "Error in input expression" if !/[\-+]?\d+(\.\d+)*/ && !/[+\-*\/]/;
+ die "Error in input expression" if !/^[\-+]?\d+(\.\d+)*$/ && !/^[+\-*\/]$/;
for ($_) {
if ($_ eq "+") {
push @stack, pop(@stack)+ pop(@stack);
diff --git a/challenge-039/ruben-westerberg/raku/ch-1.p6 b/challenge-039/ruben-westerberg/raku/ch-1.p6
new file mode 100755
index 0000000000..2dcc61c96e
--- /dev/null
+++ b/challenge-039/ruben-westerberg/raku/ch-1.p6
@@ -0,0 +1,20 @@
+#!/usr/bin/env perl6
+
+my @times=DATA().map({ |(for (m:g/(\d**2)\:(\d**2)/) {$_[0]*60+$_[1]*1 });});
+put sprintf "Lights on for %d minutes", @times.max-@times.min;
+
+
+sub DATA () {
+ my $d=q:to/END/,
+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
+END
+ return $d.lines;
+}
diff --git a/challenge-039/ruben-westerberg/raku/ch-2.p6 b/challenge-039/ruben-westerberg/raku/ch-2.p6
new file mode 100755
index 0000000000..db9f5a57cc
--- /dev/null
+++ b/challenge-039/ruben-westerberg/raku/ch-2.p6
@@ -0,0 +1,25 @@
+#!/usr/bin/env perl6
+#
+my $expression=@*ARGS[0]//"15 7 1 1 + - / 3 * 2 1 1 + + -";
+my @stack;
+$expression ~~ s:g/\s+/ /;
+put "Input expression: $expression";
+for $expression.comb: /\S+/ {
+ die "Error in input expression" if ! /^<[\-\+]>?\d+(\.\d+)*$/ && !/^<[\+\-\*\/]>$/;
+ when $_ eq "+" {
+ push(@stack, pop(@stack)+ pop(@stack));
+ }
+ when $_ eq "-" {
+ push(@stack, pop(@stack)-pop(@stack));
+ }
+ when $_ eq "*" {
+ push(@stack, pop(@stack)*pop(@stack));
+ }
+ when $_ eq "/" {
+ push(@stack, pop(@stack)/pop(@stack));
+ }
+ default {
+ push @stack, $_;
+ }
+}
+put "Result: @stack[]";