diff --git a/README.md b/README.md index c013278..de43e95 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ Le projet est disponible sur [function.divlo.fr](https://function.divlo.fr/). | **convertArabicToRoman(nombre)** | Convertis un nombre arabe en nombre romain. | - nombre : le nombre à convertir | | **convertRomanToArabic(str)** | Convertis un nombre romain en nombre arabe. | - str : le nombre romain à convertir | | **armstrongNumber(nombre)** | Vérifie si un nombre fait partie des nombres d'Armstrong ou non. | - nombre : le nombre à tester | +| **stringPermutations(string)** | Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot | - string : le mot | ## La liste des Fonctions Annexes : | Nom | Description | Paramètre(s) | diff --git a/img/function-image/heapAlgorithm.png b/img/function-image/heapAlgorithm.png new file mode 100644 index 0000000..b971fc5 Binary files /dev/null and b/img/function-image/heapAlgorithm.png differ diff --git a/php/config.php b/php/config.php index c6f3b74..894f059 100644 --- a/php/config.php +++ b/php/config.php @@ -77,7 +77,12 @@ switch ($currentpage) { $title = "Nombre d'Armstrong"; $description = "Un nombre d'Armstrong est un nombre qui est égal à la somme de ses chiffres portés à la puissance du nombre de chiffres le composant. Cette fonction permet de savoir si un nombre fait partie des nombres d'Armstrong ou non."; $image = 'https://function.divlo.fr/img/function-image/armstrongNumber.png'; - break; + break; + case '/views/function-views/heapAlgorithm.php': + $title = "Heap's algorithm"; + $description = "Heap's algorithm est un algorithme qui génère toutes les permutations unique possibles d'une châine de caractère, c'est en quelque sorte toutes les possibilités d'anagramme d'un mot (en changeant de place les lettres d’un mot, permet d’en créer un nouveau), par contre les mots n'ont pas besoin d'être de vrais mots qui ont du sens."; + $image = 'https://function.divlo.fr/img/function-image/heapAlgorithm.png'; + break; default: $title = 'Erreur 404'; $description = "Cette page n'existe pas!"; diff --git a/scripts/fonctions_principales.js b/scripts/fonctions_principales.js index 5b675a6..0709e06 100644 --- a/scripts/fonctions_principales.js +++ b/scripts/fonctions_principales.js @@ -366,4 +366,24 @@ function armstrongNumber(number) { } else { return `${number} n'est pas un nombre d'Armstrong, car ${resultString.slice(2)} = ${formatNumberResult(result)}.`; } +} + +// Retourne un tableau contenant toutes les possibilités d'anagramme d'un mot +function stringPermutations(string) { + let results = []; + + if (string.length === 1) { + results.push(string); + return results; + } + + for (let i = 0; i < string.length; i++) { + let firstChar = string[i]; + let charsLeft = string.substring(0, i) + string.substring(i + 1); + let innerPermutations = stringPermutations(charsLeft); + for (let i = 0; i < innerPermutations.length; i++) { + results.push(firstChar + innerPermutations[i]); + } + } + return results; } \ No newline at end of file diff --git a/scripts/main.js b/scripts/main.js index 9288222..09b79d1 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -254,7 +254,25 @@ $(function () { } }); + $("#submitHeapAlgorithm").click(function() + { + let value = $('#value').val(); + if(isEmptyValue(value)) + { + $('.results').html(emptyMessageError); + } + else + { + let stringPermutationsResult = stringPermutations(value); + let result = ""; + for (element in stringPermutationsResult) { + result = result + stringPermutationsResult[element] + "
"; + } + $('.results').html(`Il y a ${formatNumberResult(stringPermutationsResult.length)} possibilités d'anagramme pour le mot "${value}" qui contient ${value.length} caractères, la liste :

${result}`); + } + }); + /* Permet d'afficher l'heure en temps réel sur le footer */ window.onload = realDateTime('realDateTime'); diff --git a/views/function-list.php b/views/function-list.php index 5c7ab1b..2387b1a 100644 --- a/views/function-list.php +++ b/views/function-list.php @@ -96,13 +96,20 @@
-
+

Nombre d'Armstrong

Vérifie si un nombre fait partie des nombres d'Armstrong ou non.

+
+
+

Heap's algorithm

+ +

Génère toutes les permutations unique possibles d'une châine de caractère (en changeant de place les lettres du mot, permet d’en créer un nouveau qui n'a pas forcément de sens).

+
+
diff --git a/views/function-views/heapAlgorithm.php b/views/function-views/heapAlgorithm.php new file mode 100644 index 0000000..461d9dc --- /dev/null +++ b/views/function-views/heapAlgorithm.php @@ -0,0 +1,31 @@ + + + + + + + +
+

:

+



+ Par souci de performance, je recommande de ne pas essayer un mot avec + de 8 lettres. +

+
+ Heap's algorithm +
+
+ + +
+
+
+ +
+
+

+

+
+
+ + + \ No newline at end of file