backend: AJout de Heap's algorithm + .env.example
This commit is contained in:
parent
b0ce56a035
commit
a605b781f4
1
backend/.env.example
Normal file
1
backend/.env.example
Normal file
@ -0,0 +1 @@
|
||||
OpenWeatherMap_API_KEY = ""
|
@ -6,6 +6,7 @@ const { armstrongNumberOutput } = require('./ma
|
||||
const { weatherRequestOutput } = require('./main/weatherRequest');
|
||||
const { convertCurrencyOutput } = require('./main/convertCurrency');
|
||||
const { calculateAgeOutput } = require('./main/calculateAge');
|
||||
const { heapAlgorithmOutput } = require('./main/heapAlgorithm');
|
||||
|
||||
const functionObject = {
|
||||
randomNumber : randomNumberOutput,
|
||||
@ -16,7 +17,8 @@ const functionObject = {
|
||||
armstrongNumber : armstrongNumberOutput,
|
||||
weatherRequest : weatherRequestOutput,
|
||||
convertCurrency : convertCurrencyOutput,
|
||||
calculateAge : calculateAgeOutput
|
||||
calculateAge : calculateAgeOutput,
|
||||
heapAlgorithm : heapAlgorithmOutput
|
||||
};
|
||||
|
||||
// Choisi la fonction à exécuter
|
||||
|
@ -43,7 +43,7 @@ exports.convertDistanceOutput = ({ res, next }, argsObject) => {
|
||||
|
||||
const result = convertDistance(number, numberUnit, finalUnit);
|
||||
if (!result) {
|
||||
return sendResponse(res, generalError);
|
||||
return errorHandling(next, generalError);
|
||||
}
|
||||
|
||||
return res.status(200).json(result);
|
||||
|
46
backend/assets/functions/main/heapAlgorithm.js
Normal file
46
backend/assets/functions/main/heapAlgorithm.js
Normal file
@ -0,0 +1,46 @@
|
||||
const errorHandling = require('../../utils/errorHandling');
|
||||
const { requiredFields } = require('../../config/errors');
|
||||
|
||||
/**
|
||||
* @description Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot.
|
||||
* @param {String} string - La chaîne de caractère à permuter
|
||||
* @returns {Array}
|
||||
* @examples heapAlgorithm('abc') → ["abc", "acb", "bac", "bca", "cab", "cba"]
|
||||
*/
|
||||
function heapAlgorithm(string) {
|
||||
let results = [];
|
||||
|
||||
if (string.length === 1) {
|
||||
results.push(string);
|
||||
return results;
|
||||
}
|
||||
|
||||
for (let indexString = 0; indexString < string.length; indexString++) {
|
||||
const firstChar = string[indexString];
|
||||
const charsLeft = string.substring(0, indexString) + string.substring(indexString + 1);
|
||||
const innerPermutations = heapAlgorithm(charsLeft);
|
||||
for (let indexPermutation = 0; indexPermutation < innerPermutations.length; indexPermutation++) {
|
||||
results.push(firstChar + innerPermutations[indexPermutation]);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
/* OUTPUTS */
|
||||
exports.heapAlgorithmOutput = ({ res, next }, argsObject) => {
|
||||
let { string } = argsObject;
|
||||
|
||||
// S'il n'y a pas les champs obligatoire
|
||||
if (!(string)) {
|
||||
return errorHandling(next, requiredFields);
|
||||
}
|
||||
|
||||
// Si la chaîne de caractère dépasse LIMIT_CHARACTERS caractères
|
||||
const LIMIT_CHARACTERS = 8;
|
||||
if (string.length > LIMIT_CHARACTERS) {
|
||||
return errorHandling(next, { message: `Par souci de performance, vous ne pouvez pas exécuter cette fonction avec un mot dépassant ${LIMIT_CHARACTERS} caractères.`, statusCode: 400 });
|
||||
}
|
||||
|
||||
const result = heapAlgorithm(string);
|
||||
return res.status(200).json(result);
|
||||
}
|
Reference in New Issue
Block a user