New Function : Heap's algorithm

This commit is contained in:
Divlo 2019-10-11 21:30:05 +02:00
parent 23c3e10b0f
commit eaec55fcbb
7 changed files with 84 additions and 2 deletions

View File

@ -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) |

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View File

@ -78,6 +78,11 @@ switch ($currentpage) {
$description = "Un nombre d'<a href='https://fr.wikipedia.org/wiki/Nombre_narcissique' target='_blank'>Armstrong</a> 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;
case '/views/function-views/heapAlgorithm.php':
$title = "Heap's algorithm";
$description = "<a href='https://en.wikipedia.org/wiki/Heap%27s_algorithm' target='_blank'>Heap's algorithm</a> 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 dun mot, permet den 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!";

View File

@ -367,3 +367,23 @@ function armstrongNumber(number) {
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;
}

View File

@ -254,6 +254,24 @@ $(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] + "<br>";
}
$('.results').html(`Il y a ${formatNumberResult(stringPermutationsResult.length)} possibilités d'anagramme pour le mot "${value}" qui contient ${value.length} caractères, la liste : <br><br> ${result}`);
}
});
/* Permet d'afficher l'heure en temps réel sur le footer */
window.onload = realDateTime('realDateTime');

View File

@ -96,13 +96,20 @@
</div>
<div class="row">
<div class="col-sm-12 pb-4">
<div class="col-sm-12 col-md-6 pb-4">
<div class="text-center pb-5">
<h2 class="function-list-title"><a href="./function-views/armstrongNumber.php">Nombre d'Armstrong</a></h2>
<a href="./function-views/armstrongNumber.php"><img class="function-list-image" src="/img/function-image/armstrongNumber.png" alt=""></a>
<p class="function-list-description">Vérifie si un nombre fait partie des nombres d'Armstrong ou non.</p>
</div>
</div>
<div class="col-sm-12 col-md-6 col-md-6 pb-4">
<div class="text-center pb-5">
<h2 class="function-list-title"><a href="./function-views/heapAlgorithm.php">Heap's algorithm</a></h2>
<a href="./function-views/heapAlgorithm.php"><img class="function-list-image" src="/img/function-image/heapAlgorithm.png" alt=""></a>
<p class="function-list-description">Génère toutes les permutations unique possibles d'une châine de caractère (en changeant de place les lettres du mot, permet den créer un nouveau qui n'a pas forcément de sens).</p>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,31 @@
<!-- Config -->
<?php include("../../php/config.php");?>
<!-- Header -->
<?php include("../../incl/header.php");?>
<!-- Page Content -->
<div class="container">
<h1><span class="important"><?php echo $title?></span> :</h1>
<p class="pt-3 text-center"><?php echo $description?> <br> <br>
<em>Par souci de performance, je recommande de ne pas essayer un mot avec + de 8 lettres.</em>
</p>
<div class="text-center">
<img class="function-image" src="/img/function-image/heapAlgorithm.png" alt="Heap's algorithm">
</div>
<div class="form-group">
<label for="value">Entrez un mot :</label>
<input name="value" type="text" id="value" placeholder="(e.g : Mot)" class="form-control">
<br>
<div class="form-row text-center">
<div class="col-12">
<button type="submit" id="submitHeapAlgorithm" class="btn btn-dark text-center">Envoyer</button>
</div>
</div>
<br> <br>
<p class="results text-center"></p>
</div>
</div>
<!-- Footer -->
<?php include("../../incl/footer.php");?>