code.js : déplacement code vérif tri => tri.js ; ajout générer nom unique
This commit is contained in:
parent
ec3434c748
commit
0a1012dd27
401
code.js
401
code.js
@ -203,7 +203,8 @@ function nbocc(elem, tab) {
|
||||
// renvoyer un nom au hasard d'un tableau en s'assurant qu'il n'a pas
|
||||
// d'homonyme après normalisation
|
||||
// ------------------------------------------------------------------------
|
||||
function getNom(tab) {
|
||||
function getNom(tab)
|
||||
{
|
||||
while (true) {
|
||||
let nom = tab.at(Math.floor(Math.random() * tab.length));
|
||||
let nb = nbocc(normaliser(nom), tab);
|
||||
@ -243,383 +244,33 @@ function indonymes(chaine, tab) {
|
||||
return homos;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// 1. première ville vide et dernière ville vide
|
||||
// ==> comparer numéro premier et numéro dernier, inverser si besoin
|
||||
// 2. première ville vide et dernière ville non vide
|
||||
// décroissant : inverser si besoin
|
||||
// 3. première ville non vide et dernière ville vide
|
||||
// croissant : inverser si besoin
|
||||
// 4. première ville non vide et dernière ville non vide
|
||||
// 4.1 première ville < dernière ville : croissant, inverser si besoin
|
||||
// 4.2 première ville > dernière ville : décroissant, inverser si besoin
|
||||
// 4.3 première ville = dernière ville
|
||||
// ==> comparer numéro premier et numéro dernier, inverser si besoin
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
if (${premiere_ville} == "" && ${derniere_ville} == "")
|
||||
{
|
||||
if (${numero_premier} > ${numero_dernier})
|
||||
{
|
||||
// décroissant : inverser si besoin
|
||||
} else {
|
||||
// croissant : inverser si besoin
|
||||
// fabriquer un nom qui contient une chaîne donnée
|
||||
const upper = (str) => {
|
||||
return str.charAt(0).toUpperCase() + str.slice(1);
|
||||
};
|
||||
function homonyme(chaine, lg) {
|
||||
let chars = 'aàbcdeéèfghijklmnoôpqrstuùvwxyz';
|
||||
let str = '';
|
||||
for (let i = 0; i < lg; i++) {
|
||||
str += chars.charAt(Math.floor(Math.random() * chars.length));
|
||||
}
|
||||
let debut = upper(str.slice(0, lg/2));
|
||||
let fin = upper(str.slice(lg/2));
|
||||
return debut + chaine + fin;
|
||||
}
|
||||
else if (${premiere_ville} == "" && ${derniere_ville} != "")
|
||||
{
|
||||
// décroissant : inverser si besoin
|
||||
}
|
||||
else if (${premiere_ville} != "" && ${derniere_ville} == "")
|
||||
{
|
||||
// croissant : inverser si besoin
|
||||
}
|
||||
else if (${premiere_ville} != "" && && ${derniere_ville} != "")
|
||||
{
|
||||
if (${premiere_ville}.localeCompare(${derniere_ville}) < 0)
|
||||
{
|
||||
// croissant : inverser si besoin
|
||||
} else if (${premiere_ville}.localeCompare(${derniere_ville}) > 0)
|
||||
{
|
||||
// décroissant : inverser si besoin
|
||||
} else {
|
||||
if (${numero_premier} > ${numero_dernier})
|
||||
{
|
||||
// décroissant : inverser si besoin
|
||||
} else {
|
||||
// croissant : inverser si besoin
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// simplification ordre croissant
|
||||
if (${premiere_ville} == "" && ${derniere_ville} == ""
|
||||
&&
|
||||
${numero_premier} > ${numero_dernier})
|
||||
{
|
||||
// décroissant : inverser
|
||||
}
|
||||
else if (${premiere_ville} == "" && ${derniere_ville} != "")
|
||||
{
|
||||
// décroissant : inverser
|
||||
}
|
||||
else if (${premiere_ville} != "" && && ${derniere_ville} != "")
|
||||
{
|
||||
if (${premiere_ville}.localeCompare(${derniere_ville}) > 0
|
||||
||
|
||||
(${premiere_ville}.localeCompare(${derniere_ville}) == 0
|
||||
&&
|
||||
${numero_premier} > ${numero_dernier}))
|
||||
{
|
||||
// décroissant : inverser
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// simplification ordre décroissant
|
||||
if (${premiere_ville} == "" && ${derniere_ville} == ""
|
||||
&&
|
||||
${numero_premier} < ${numero_dernier})
|
||||
{
|
||||
// croissant : inverser
|
||||
}
|
||||
else if (${premiere_ville} != "" && ${derniere_ville} == "")
|
||||
{
|
||||
// croissant : inverser
|
||||
}
|
||||
else if (${premiere_ville} != "" && && ${derniere_ville} != "")
|
||||
{
|
||||
if (${premiere_ville}.localeCompare(${derniere_ville}) < 0
|
||||
||
|
||||
(${premiere_ville}.localeCompare(${derniere_ville}) == 0
|
||||
&&
|
||||
${numero_premier} < ${numero_dernier}))
|
||||
{
|
||||
// croissant : inverser
|
||||
}
|
||||
}
|
||||
|
||||
return homonyme(${nom_cherche}, 10);
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// contrôler si les membres sont triés par ordre (dé)croissant du nom du parent
|
||||
//
|
||||
// 1) au moins 2 parents non vides (donc forcément les deux premiers)
|
||||
// - parent1 < parent2 => croissant
|
||||
// - parent1 > parent2 => décroissant
|
||||
// - parent1 = parent2
|
||||
// - membre1 < membre2 => croissant
|
||||
// - membre1 > membre2 => décroissant
|
||||
// - membre1 = membre2
|
||||
// - numéro1 < numéro 2 => croissant
|
||||
// - numéro1 > numéro 2 => décroissant
|
||||
// 2) un seul parent non vide (donc le premier)
|
||||
// - membre2 < membre3 => croissant
|
||||
// - membre2 > membre3 => décroissant
|
||||
// - membre2 = membre3
|
||||
// - numéro2 < numéro 3 => croissant
|
||||
// - numéro2 > numéro 3 => décroissant
|
||||
|
||||
if (${nb_parents} >= 2)
|
||||
{
|
||||
if (${parent1}.localeCompare(${parent2}) < 0)
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else if (${parent1}.localeCompare(${parent2}) > 0)
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
else if (${membre1}.localeCompare(${membre2}) < 0)
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else if (${membre1}.localeCompare(${membre2}) > 0)
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
else if (${numero1} < ${numero2})
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else //if (${numero1} > ${numero2})
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
}
|
||||
// un seul parent
|
||||
else if (${nb_total_membres} > 2)
|
||||
{
|
||||
if (${membre2}.localeCompare(${membre3}) < 0)
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else if (${membre2}.localeCompare(${membre3}) > 0)
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
else if (${numero2} < ${numero3})
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else //if (${numero2} > ${numero3})
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
}
|
||||
|
||||
// simplification ordre croissant
|
||||
if (${nb_parents}) >= 2)
|
||||
{
|
||||
if ((${parent1}.localeCompare(${parent2}) > 0)
|
||||
||
|
||||
(${parent1}.localeCompare(${parent2}) == 0
|
||||
&& ${membre1}.localeCompare(${membre2}) > 0)
|
||||
||
|
||||
(${parent1}.localeCompare(${parent2}) == 0
|
||||
&& ${membre1}.localeCompare(${membre2}) == 0
|
||||
&& ${numero1} > ${numero2}))
|
||||
{
|
||||
// décroissant => inverser
|
||||
}
|
||||
}
|
||||
// un seul parent
|
||||
else if (${nb_total_membres} > 2)
|
||||
{
|
||||
if ((${membre2}.localeCompare(${membre3}) > 0)
|
||||
||
|
||||
(${membre2}.localeCompare(${membre3}) == 0
|
||||
&& ${numero2} > ${numero3}))
|
||||
{
|
||||
// décroissant => inverser
|
||||
}
|
||||
}
|
||||
|
||||
// simplification ordre décroissant
|
||||
if (${nb_parents}) >= 2)
|
||||
{
|
||||
if ((${parent1}.localeCompare(${parent2}) < 0)
|
||||
||
|
||||
(${parent1}.localeCompare(${parent2}) == 0
|
||||
&& ${membre1}.localeCompare(${membre2}) < 0)
|
||||
||
|
||||
(${parent1}.localeCompare(${parent2}) == 0
|
||||
&& ${membre1}.localeCompare(${membre2}) == 0
|
||||
&& ${numero1} < ${numero2}))
|
||||
{
|
||||
// croissant => inverser
|
||||
}
|
||||
}
|
||||
// un seul parent
|
||||
else if (${nb_total_membres} > 2)
|
||||
{
|
||||
if ((${membre2}.localeCompare(${membre3}) < 0)
|
||||
||
|
||||
(${membre2}.localeCompare(${membre3}) == 0
|
||||
&& ${numero2} < ${numero3}))
|
||||
{
|
||||
// croissant => inverser
|
||||
}
|
||||
}
|
||||
|
||||
// générer un nouveau nom en s'assurant qu'il n'a pas
|
||||
// d'homonyme après normalisation
|
||||
// ------------------------------------------------------------------------
|
||||
// contrôler si les membres sont triés par ordre (dé)croissant de la colonne responsable
|
||||
// colonne responsable non vide en tête
|
||||
//
|
||||
// 1) au moins 2 oui dans la colonne responsable (donc forcément les deux premiers)
|
||||
// - membre1 < membre2 => croissant
|
||||
// - membre1 > membre2 => décroissant
|
||||
// - membre1 = membre2
|
||||
// - numéro1 < numéro 2 => croissant
|
||||
// - numéro1 > numéro 2 => décroissant
|
||||
// 2) un seul oui dans la colonne responsable (donc le premier)
|
||||
// - numéro2 < numéro 3 => croissant
|
||||
// - numéro2 > numéro 3 => décroissant
|
||||
|
||||
if (${nb_resp} >= 2)
|
||||
{
|
||||
if (${membre1}.localeCompare(${membre2}) < 0)
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else if (${membre1}.localeCompare(${membre2}) > 0)
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
else if (${numero1} < ${numero2})
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else //if (${numero1} > ${numero2})
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
}
|
||||
// un seul responsable
|
||||
else if (${nb_total_membres} > 2)
|
||||
{
|
||||
if (${membre2}.localeCompare(${membre3}) < 0)
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else if (${membre2}.localeCompare(${membre3}) > 0)
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
else if (${numero2} < ${numero3})
|
||||
{
|
||||
// croissant
|
||||
}
|
||||
else //if (${numero2} > ${numero3})
|
||||
{
|
||||
// décroissant
|
||||
}
|
||||
}
|
||||
|
||||
// simplification ordre croissant
|
||||
if (${nb_resp}) >= 2)
|
||||
{
|
||||
if (${membre1}.localeCompare(${membre2}) > 0
|
||||
||
|
||||
(${membre1}.localeCompare(${membre2}) == 0
|
||||
&& ${numero1} > ${numero2}))
|
||||
{
|
||||
// décroissant => inverser
|
||||
}
|
||||
}
|
||||
// un seul responsable
|
||||
else if (${nb_total_membres} > 2)
|
||||
{
|
||||
if (${membre2}.localeCompare(${membre3}) > 0
|
||||
||
|
||||
(${membre2}.localeCompare(${membre3}) == 0
|
||||
&& ${numero2} > ${numero3}))
|
||||
{
|
||||
// décroissant => inverser
|
||||
}
|
||||
}
|
||||
|
||||
// simplification ordre décroissant
|
||||
if (${nb_resp}) >= 2)
|
||||
{
|
||||
if (${membre1}.localeCompare(${membre2}) < 0
|
||||
||
|
||||
(${membre1}.localeCompare(${membre2}) == 0
|
||||
&& ${numero1} < ${numero2}))
|
||||
{
|
||||
// croissant => inverser
|
||||
}
|
||||
}
|
||||
// un seul responsable
|
||||
else if (${nb_total_membres} > 2)
|
||||
{
|
||||
if (${membre2}.localeCompare(${membre3}) < 0
|
||||
||
|
||||
(${membre2}.localeCompare(${membre3}) == 0
|
||||
&& ${numero2} < ${numero3}))
|
||||
{
|
||||
// croissant => inverser
|
||||
}
|
||||
}
|
||||
|
||||
let numeros = [ 8, 5, 9, 2, 3, 6, 7, 4, 1 ];
|
||||
|
||||
let noms = [ "Yopduu Cxùbvnn", "Xeosnm Rixwxé", "Vonôdjz Jcpùuèf", "Tnczgèb Ùttypmt",
|
||||
"Sdcrdi Vzùmbim", "Kgazmà Éurbdv", "Izgzwùz Evjsqjeù","Hmupazn Chrédki",
|
||||
"Lambert Paul" ];
|
||||
|
||||
let parents = [ "Lambert Paul", "Lambert Paul", "Lambert Paul", "Lambert Paul",
|
||||
"Lambert Paul", "Lambert Paul", "Lambert Paul", "Lambert Paul", "" ];
|
||||
|
||||
function inverser(numeros, noms, parents)
|
||||
{
|
||||
for (let i = 0; i < numeros.length; ++i) {
|
||||
if (parents[i] != "") {
|
||||
premier = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (let i = numeros.length - 1; i >= 0; --i) {
|
||||
if (parents[i] != "") {
|
||||
dernier = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
console.log("premier : ", numeros[premier], noms[premier], parents[premier]);
|
||||
console.log("dernier : ", numeros[dernier], noms[dernier], parents[dernier]);
|
||||
|
||||
if (parents[premier].localeCompare(parents[dernier]) < 0)
|
||||
{
|
||||
console.log(parents[premier], "<", parents[dernier]);
|
||||
}
|
||||
if (parents[premier].localeCompare(parents[dernier]) == 0 &&
|
||||
noms[premier].localeCompare(noms[dernier]) < 0)
|
||||
{
|
||||
console.log(parents[premier], "=", parents[dernier]);
|
||||
console.log(noms[premier], "<", noms[dernier]);
|
||||
}
|
||||
if (parents[premier].localeCompare(parents[dernier]) == 0 &&
|
||||
noms[premier].localeCompare(noms[dernier]) == 0 &&
|
||||
numeros[premier] < numeros[dernier])
|
||||
{
|
||||
console.log(parents[premier], "=", parents[dernier]);
|
||||
console.log(noms[premier], "=", noms[dernier]);
|
||||
console.log(numeros[premier], "<", numeros[dernier]);
|
||||
}
|
||||
|
||||
if (parents[premier].localeCompare(parents[dernier]) < 0
|
||||
||
|
||||
(parents[premier].localeCompare(parents[dernier]) == 0 &&
|
||||
noms[premier].localeCompare(noms[dernier]) < 0)
|
||||
||
|
||||
(parents[premier].localeCompare(parents[dernier]) == 0 &&
|
||||
noms[premier].localeCompare(noms[dernier]) == 0 &&
|
||||
numeros[premier] < numeros[dernier]))
|
||||
{
|
||||
console.log("Inverser le tri");
|
||||
}
|
||||
else {
|
||||
console.log("Tri ok");
|
||||
}
|
||||
}
|
||||
inverser(numeros, noms, parents);
|
||||
function genererNom(tab)
|
||||
{
|
||||
while (true) {
|
||||
let nom = chaine(12);
|
||||
let nb = nbocc(normaliser(nom), tab);
|
||||
if (nb == 0) { return nom; }
|
||||
}
|
||||
}
|
||||
return genererNom(${lesnoms})
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user