Skip to content

Commit 146b7b2

Browse files
committed
add endpoint for subtraction and for primes:
1 parent 3a96b94 commit 146b7b2

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

utils/QueryProcessor.tsx

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff 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(/what is\s*(-?\d+(?:\.\d+)?)\s*minus\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(/which of the following numbers is the largest:\s*(.+)\?/);
@@ -73,5 +82,39 @@ export default function QueryProcessor(query: string): string {
7382
}
7483
}
7584

85+
const primesMatch = query
86+
.toLowerCase()
87+
.match(/which of the following numbers are primes:\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
}

0 commit comments

Comments
 (0)