PrimeFactors: Improve triggering (#4149)

* PrimeFactors: Improve triggering
- Added check to regex guard if query matches form "is <number> prime"
- Strips all preceeding non-digit characters from remainder

Fixes #2799

* Added support for new triggers:
- 'is <number> a prime'
- 'is <number> a prime number'
- 'is <number> prime number'
master
Kyle Daruwalla 2017-05-05 16:57:48 -05:00 committed by Zaahir Moolla
parent c3595bdea0
commit 9e44abe1b4
2 changed files with 23 additions and 3 deletions

View File

@ -21,7 +21,14 @@ triggers startend => (
'prime factorization',
'prime factorization of',
'factorize',
'prime factorize',
'prime factorize'
);
triggers end => (
'prime',
'a prime',
'prime number',
'a prime number'
);
sub convert_to_superscripts (_) {
@ -88,9 +95,12 @@ sub format_answer {
}
handle remainder => sub {
# Exit if it's not a digit.
# Exit if it's not a digit or if it doesn't match the form "is <number> prime"
# TODO: We should accept different number formats.
return unless /^\d+$/;
return unless (/^\d+$/ || ($req->query =~ /^is\s\d+\s(a\s)?prime(\snumber)?$/i));
# Extract only the number from the remainder
$_ =~ s/\D+//;
my @factors = factor_exp($_);

View File

@ -42,6 +42,16 @@ ddg_goodie_test(
build_answer('128 - Prime Factors', '2⁷')),
'42 prime factorize' => test_zci('The prime factorization of 42 is 2 × 3 × 7',
build_answer('42 - Prime Factors', '2 × 3 × 7')),
'is 83 prime' => test_zci('83 is a prime number',
build_answer(undef, '83 is a prime number')),
'is 4 prime' => test_zci('The prime factorization of 4 is 2^2',
build_answer('4 - Prime Factors', '2²')),
'is 83 a prime' => test_zci('83 is a prime number',
build_answer(undef, '83 is a prime number')),
'is 83 prime number' => test_zci('83 is a prime number',
build_answer(undef, '83 is a prime number')),
'is 83 a prime number' => test_zci('83 is a prime number',
build_answer(undef, '83 is a prime number')),
'optimus prime 45' => undef
);