File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed
Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change @@ -35,6 +35,15 @@ export default function QueryProcessor(query: string): string {
3535 return ( left * right ) . toString ( ) ;
3636 }
3737
38+ const minusMatch = query
39+ . toLowerCase ( )
40+ . match ( / w h a t i s \s * ( - ? \d + (?: \. \d + ) ? ) \s * m i n u s \s * ( - ? \d + (?: \. \d + ) ? ) \? / ) ;
41+ if ( minusMatch ) {
42+ const left = Number ( minusMatch [ 1 ] ) ;
43+ const right = Number ( minusMatch [ 2 ] ) ;
44+ return ( left - right ) . toString ( ) ;
45+ }
46+
3847 const largestNumbersMatch = query
3948 . toLowerCase ( )
4049 . match ( / w h i c h o f t h e f o l l o w i n g n u m b e r s i s t h e l a r g e s t : \s * ( .+ ) \? / ) ;
@@ -73,5 +82,39 @@ export default function QueryProcessor(query: string): string {
7382 }
7483 }
7584
85+ const primesMatch = query
86+ . toLowerCase ( )
87+ . match ( / w h i c h o f t h e f o l l o w i n g n u m b e r s a r e p r i m e s : \s * ( .+ ) \? / ) ;
88+ if ( primesMatch ) {
89+ const numbers = primesMatch [ 1 ]
90+ . split ( "," )
91+ . map ( ( value ) => Number ( value . trim ( ) ) )
92+ . filter ( ( value ) => Number . isInteger ( value ) ) ;
93+
94+ const isPrime = ( value : number ) : boolean => {
95+ if ( value <= 1 ) {
96+ return false ;
97+ }
98+ if ( value === 2 ) {
99+ return true ;
100+ }
101+ if ( value % 2 === 0 ) {
102+ return false ;
103+ }
104+
105+ for ( let divisor = 3 ; divisor * divisor <= value ; divisor += 2 ) {
106+ if ( value % divisor === 0 ) {
107+ return false ;
108+ }
109+ }
110+ return true ;
111+ } ;
112+
113+ const primeNumbers = numbers . filter ( ( value ) => isPrime ( value ) ) ;
114+ if ( primeNumbers . length > 0 ) {
115+ return primeNumbers . join ( ", " ) ;
116+ }
117+ }
118+
76119 return "" ;
77120}
You can’t perform that action at this time.
0 commit comments