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
parent
c3595bdea0
commit
9e44abe1b4
|
@ -21,7 +21,14 @@ triggers startend => (
|
||||||
'prime factorization',
|
'prime factorization',
|
||||||
'prime factorization of',
|
'prime factorization of',
|
||||||
'factorize',
|
'factorize',
|
||||||
'prime factorize',
|
'prime factorize'
|
||||||
|
);
|
||||||
|
|
||||||
|
triggers end => (
|
||||||
|
'prime',
|
||||||
|
'a prime',
|
||||||
|
'prime number',
|
||||||
|
'a prime number'
|
||||||
);
|
);
|
||||||
|
|
||||||
sub convert_to_superscripts (_) {
|
sub convert_to_superscripts (_) {
|
||||||
|
@ -88,9 +95,12 @@ sub format_answer {
|
||||||
}
|
}
|
||||||
|
|
||||||
handle remainder => sub {
|
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.
|
# 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($_);
|
my @factors = factor_exp($_);
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,16 @@ ddg_goodie_test(
|
||||||
build_answer('128 - Prime Factors', '2⁷')),
|
build_answer('128 - Prime Factors', '2⁷')),
|
||||||
'42 prime factorize' => test_zci('The prime factorization of 42 is 2 × 3 × 7',
|
'42 prime factorize' => test_zci('The prime factorization of 42 is 2 × 3 × 7',
|
||||||
build_answer('42 - Prime Factors', '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
|
'optimus prime 45' => undef
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue