exercism-perl5

Repository for my Perl 5 Exercism exercises
git clone git://git.samirparikh.com/exercism-perl5
Log | Files | Refs | README

commit abd8ed404671a1518c2ed757d1a57b870bf06f30
parent 7dce0a15a7894d89de5bdb9c4e38b7e48c79fabf
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Tue, 28 Dec 2021 20:52:59 +0000

get initial regex working

Diffstat:
Mwordy/Wordy.pm | 36+++++++++++-------------------------
1 file changed, 11 insertions(+), 25 deletions(-)

diff --git a/wordy/Wordy.pm b/wordy/Wordy.pm @@ -12,32 +12,18 @@ sub multiplication { $_[0] * $_[1] } sub answer { my ($question) = @_; - my @m = (); + die "unknown operation" if ($question !~ m/^What/); + my @m; say $question; - @m = ($question =~ m/What is (-?\d+)\?/); - return $m[0] if (scalar @m == 1); - @m = ($question =~ m/What is (-?\d+)\s(plus|minus|divided by|multiplied by)\s(-?\d+)\?/); - #say "I found ", scalar @m, " matches: @m"; - #say "no third element exists" if ($m[2] eq ""); - if (scalar @m == 3) { - return addition($m[0],$m[2]) if ($m[1] eq "plus"); - return subtraction($m[0],$m[2]) if ($m[1] eq "minus"); - return division($m[0],$m[2]) if ($m[1] eq "divided by"); - return multiplication($m[0],$m[2]) if ($m[1] eq "multiplied by"); - } - @m = ($question =~ m/(-?\d+)\s(plus|minus|divided by|multiplied by)\s(-?\d+)\s(plus|minus|divided by|multiplied by)\s(-?\d+)/); - if (scalar @m == 5) { - #say "found multiple operations"; - my $a; - $a = addition($m[0],$m[2]) if ($m[1] eq "plus"); - $a = subtraction($m[0],$m[2]) if ($m[1] eq "minus"); - $a = division($m[0],$m[2]) if ($m[1] eq "divided by"); - $a = multiplication($m[0],$m[2]) if ($m[1] eq "multiplied by"); - return addition($a,$m[4]) if ($m[3] eq "plus"); - return subtraction($a,$m[4]) if ($m[3] eq "minus"); - return division($a,$m[4]) if ($m[3] eq "divided by"); - return multiplication($a,$m[4]) if ($m[3] eq "multiplied by"); - } + @m = ($question =~ + m/ + (-?\d+ # digits, optional minus sign + | # or + plus|minus|divided|multiplied) # operation + /gx); + say "here is what I found"; + say "->$_<-" foreach @m; + say "total elements: ", scalar @m; return undef; }