|
|
|
@ -404,19 +404,92 @@ function generate2() {
|
|
|
|
|
else logique.type = getTypeFromSameMatch(listeSame, logique.matchId1);
|
|
|
|
|
switch (logique.type) {
|
|
|
|
|
case 0:
|
|
|
|
|
console.log(logique.id + " type : " + logique.type + " col : " + logique.col);
|
|
|
|
|
insertLogiqueColonne(logique.id, "et", logique.col - 1);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
console.log(logique.id + " type : " + logique.type + " col : " + logique.col);
|
|
|
|
|
insertLogiqueColonne(logique.id, "ou", logique.col - 1);
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
console.log(logique.id + " type : " + logique.type + " col : " + logique.col);
|
|
|
|
|
insertLogiqueColonne(logique.id, "inv", logique.col - 1);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
var logiques;
|
|
|
|
|
//creation de liens entre les portes logiques :
|
|
|
|
|
for (let col = 1; col < colonneTot; col++) {
|
|
|
|
|
//recuperer tout les logiques :
|
|
|
|
|
logiques = new Array();
|
|
|
|
|
listeLogiqueObj.forEach(function (logique) {
|
|
|
|
|
if (logique.col === col && logique.id3 === null) logiques.push(logique);
|
|
|
|
|
});
|
|
|
|
|
//check si y a des fork
|
|
|
|
|
while (getNumberFork(fork, col) > 0) {
|
|
|
|
|
fork.forEach(function (element) {
|
|
|
|
|
if (element[0] === col) {
|
|
|
|
|
//selection de la sortie a forker :
|
|
|
|
|
let logiqueFork = logiques[getRandomArbitrary(0, logiques.length)];
|
|
|
|
|
//recupération des logiques d'entree :
|
|
|
|
|
let logiqueEntre = new Array();
|
|
|
|
|
let sameId = null;
|
|
|
|
|
listeLogiqueObj.forEach(function (logique) {
|
|
|
|
|
|
|
|
|
|
if (logique.col === col + 1) {
|
|
|
|
|
if (sameId === null) {
|
|
|
|
|
sameId = logique.matchId1;
|
|
|
|
|
logiqueEntre.push(logique);
|
|
|
|
|
} else if (sameId === logique.matchId1)
|
|
|
|
|
logiqueEntre.push(logique);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
logiqueFork.id3 = "done";
|
|
|
|
|
//creation du lien avec fork :
|
|
|
|
|
for (let i = 0; i < logiqueEntre.length; i++) {
|
|
|
|
|
createLink(findLogique(logiqueFork.id), findLogique(logiqueEntre[i].id));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fork.splice(fork.indexOf(element), 1);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//creation des autres liens :
|
|
|
|
|
//recupération des logiques restants :
|
|
|
|
|
for (x in listeLogiqueObj) {
|
|
|
|
|
if (listeLogiqueObj[x].id3 === null && listeLogiqueObj[x].col !== colonneTot) {
|
|
|
|
|
//liste des logiques possible :
|
|
|
|
|
let loqiques = new Array();
|
|
|
|
|
listeLogiqueObj.forEach(function (logique) {
|
|
|
|
|
if (logique.col === listeLogiqueObj[x].col + 1) {
|
|
|
|
|
if (logique.type === 2 && checkLogiqueLines(logique.id, "id1") === null) logiques.push(logique);
|
|
|
|
|
else if (logique.type !== 2) {
|
|
|
|
|
if (checkLogiqueLines(logique.id, "id1") === null || checkLogiqueLines(logique.id, "id2") === null) logiques.push(logique);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//attribution du logique le plus proche :
|
|
|
|
|
let logiqueFinal = null;
|
|
|
|
|
logiques.forEach(function (logique) {
|
|
|
|
|
if (logiqueFinal === null) {
|
|
|
|
|
logiqueFinal = logique;
|
|
|
|
|
} else if (Math.abs(findLogique(listeLogiqueObj[x].id).y - findLogique(logique.id).y) < Math.abs(findLogique(listeLogiqueObj[x].id).y - findLogique(logiqueFinal.id).y)) {
|
|
|
|
|
logiqueFinal = logique;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//console.log(listeLogiqueObj[x].id + " => " + logiqueFinal.id);
|
|
|
|
|
console.log(findLogique(listeLogiqueObj[x].id));
|
|
|
|
|
createLink(findLogique(listeLogiqueObj[x].id), findLogique(logiqueFinal.id));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getNumberFork(arr, col) {
|
|
|
|
|
let num = 0;
|
|
|
|
|
arr.forEach(function (item) {
|
|
|
|
|
if (item[0] === col) num++;
|
|
|
|
|
});
|
|
|
|
|
return num;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getElementArray(one, array) {
|
|
|
|
|