commit abd8ed404671a1518c2ed757d1a57b870bf06f30
parent 7dce0a15a7894d89de5bdb9c4e38b7e48c79fabf
Author: Samir Parikh <noreply@samirparikh.com>
Date: Tue, 28 Dec 2021 20:52:59 +0000
get initial regex working
Diffstat:
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;
}