From 895e9a4fc2c1a427c55ebaafb5423d3db6e3dddc Mon Sep 17 00:00:00 2001 From: Emmanuel Gaillot Date: Sat, 20 Dec 2025 21:14:53 +0100 Subject: Solve retrieved challenge --- lambda-calcul/javascript/src/client.js | 19 ++++++++++++++++++- lambda-calcul/javascript/src/internals.js | 5 +++++ lambda-calcul/javascript/src/interpreter.js | 7 +++++++ lambda-calcul/javascript/src/parser.js | 7 +++++++ lambda-calcul/javascript/src/printer.js | 5 +++++ 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 lambda-calcul/javascript/src/internals.js create mode 100644 lambda-calcul/javascript/src/interpreter.js create mode 100644 lambda-calcul/javascript/src/parser.js create mode 100644 lambda-calcul/javascript/src/printer.js (limited to 'lambda-calcul/javascript/src') 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, }; }; diff --git a/lambda-calcul/javascript/src/internals.js b/lambda-calcul/javascript/src/internals.js new file mode 100644 index 0000000..f55736a --- /dev/null +++ b/lambda-calcul/javascript/src/internals.js @@ -0,0 +1,5 @@ +const σ = (name) => ({ sym: name }); + +module.exports = { + σ, +}; diff --git a/lambda-calcul/javascript/src/interpreter.js b/lambda-calcul/javascript/src/interpreter.js new file mode 100644 index 0000000..a2e8481 --- /dev/null +++ b/lambda-calcul/javascript/src/interpreter.js @@ -0,0 +1,7 @@ +const { σ } = require('./internals'); + +const evaluate = (term) => term; + +module.exports = { + evaluate, +}; diff --git a/lambda-calcul/javascript/src/parser.js b/lambda-calcul/javascript/src/parser.js new file mode 100644 index 0000000..77593e0 --- /dev/null +++ b/lambda-calcul/javascript/src/parser.js @@ -0,0 +1,7 @@ +const { σ } = require('./internals'); + +const parse = (x) => σ(x); + +module.exports = { + parse, +}; diff --git a/lambda-calcul/javascript/src/printer.js b/lambda-calcul/javascript/src/printer.js new file mode 100644 index 0000000..39dbf38 --- /dev/null +++ b/lambda-calcul/javascript/src/printer.js @@ -0,0 +1,5 @@ +const print = ({ sym: name }) => name; + +module.exports = { + print, +}; -- cgit v1.3.1