summaryrefslogtreecommitdiff
path: root/lambda-calcul/javascript/src/client.js
diff options
context:
space:
mode:
authorEmmanuel Gaillot <emmanuel.gaillot@gmail.com>2025-12-20 21:14:53 +0100
committerEmmanuel Gaillot <emmanuel.gaillot@gmail.com>2025-12-20 22:00:26 +0100
commit895e9a4fc2c1a427c55ebaafb5423d3db6e3dddc (patch)
treee69b67055428d49cc3bad8f81b1013e45a1dd5c8 /lambda-calcul/javascript/src/client.js
parent800f5628d86313c315d38e983318bb0a027137e2 (diff)
downloadlambda-nantes-895e9a4fc2c1a427c55ebaafb5423d3db6e3dddc.tar.gz
Solve retrieved challenge
Diffstat (limited to 'lambda-calcul/javascript/src/client.js')
-rw-r--r--lambda-calcul/javascript/src/client.js19
1 files changed, 18 insertions, 1 deletions
diff --git a/lambda-calcul/javascript/src/client.js b/lambda-calcul/javascript/src/client.js
index d046187..88ea253 100644
--- a/lambda-calcul/javascript/src/client.js
+++ b/lambda-calcul/javascript/src/client.js
@@ -1,11 +1,27 @@
const axios = require('axios');
-const newClient = ({ playerName, challengerURL }) => {
+const defaultInterpreter = require('./interpreter');
+const defaultParser = require('./parser');
+const defaultPrinter = require('./printer');
+
+const newClient = ({
+ challengerURL,
+ interpreter = defaultInterpreter,
+ parser = defaultParser,
+ playerName,
+ printer = defaultPrinter,
+}) => {
const nextChallenge = (token) => axios ({
url: `${challengerURL}/api/challenge?token=${token}`,
})
.then(({ data: { expr } }) => expr);
+ const solve = (challenge) => {
+ const parsedExpression = parser.parse(challenge);
+ const evaluatedExpression = interpreter.evaluate(parsedExpression);
+ return printer.print(evaluatedExpression);
+ }
+
const start = () => axios({
method: 'POST',
url: `${challengerURL}/api/register`,
@@ -16,6 +32,7 @@ const newClient = ({ playerName, challengerURL }) => {
return {
nextChallenge,
+ solve,
start,
};
};