//import('./Model/Card.js') function isSet(cards) { let attributesMatrix = []; cards.forEach(element => { attributesMatrix.push(element.getAttributes()); }); // Idéalement check si toute les listes d'attributs sont de même taille for(let i = 0; i < attributesMatrix[0].length; i++) { let listAttributes = [] for(let j = 0; j < attributesMatrix.length; j++) { listAttributes.push(attributesMatrix[j][i]); } if(!checkAttributes(listAttributes)){ return false; } } return true; } function checkAttributes(attributes){ let orderingMethod = "null"; // Can only take ["null", "same", "different"] let boolLoop = true; attributes.forEach((value, index) => { if(index !== attributes.length) { for (let i = index+1; i < attributes.length; i++) { if(attributes[i] === value) { if(orderingMethod === "null" || orderingMethod === "same") { orderingMethod = "same"; } else { boolLoop = false; } } else { if(orderingMethod === "null" || orderingMethod === "different") { orderingMethod = "different" } else { boolLoop = false } } } } }); return boolLoop === true; } // The digit refere to the number of cards required to make a set // function numberOfSets3(deck){ let res = 0 for(i=0;i { verif = false; attributsCartes.forEach(attribCartes => { if (element == attribCartes) { verif = true; } }) if (verif == false) { l.push(element); } }); return l } function trouveElements(attributsCartes) { let x; tabColor.forEach(element => { if (element == attributsCartes[0]) { x = createElements(attributsCartes, tabColor); } }); tabNumber.forEach(element => { if (element == attributsCartes[0]) { x = createElements(attributsCartes, tabNumber); } }); tabShape.forEach(element => { if (element == attributsCartes[0]) { x = createElements(attributsCartes, tabShape); } }); tabFilling.forEach(element => { if (element == attributsCartes[0]) { x = createElements(attributsCartes, tabFilling); } }); tabOutline.forEach(element => { if (element == attributsCartes[0]) { x = createElements(attributsCartes, tabOutline); } }); return x; } function createCard(cards) { let attributesMatrix = []; let carteFinale = []; let listeInter = []; cards.forEach(element => { attributesMatrix.push(element.getAttributes()); }); for (let i = 0; i < attributesMatrix[0].length; i++) { listeInter = []; attributesMatrix.forEach(element => { listeInter.push(element[i]); }); //S'ils sont tous égaux if (listeInter.every(element => element === listeInter[0])) { l = [] l.push(listeInter[0]) carteFinale.push(l); } else { //S'ils sont tous différents if ([...new Set(listeInter)].length === listeInter.length) { carteFinale.push(trouveElements(listeInter)); } //Sinon else { carteFinale.push([]); } } } console.log(carteFinale); return carteFinale; } function isHyperset(cardsLeft, cardsRight) { left = createCard(cardsLeft) right = createCard(cardsRight) let verif; for (let i = 0; i < left.length; i++) { verif = false; left[i].forEach(elementG => { right[i].forEach(elementD => { if (elementD == elementG) { verif=true } }) }) if (verif == false) { return false; } } return true; }