Fonction hyperset fonctionnant pour n'importe quel nombre de cartes et d'attributs
continuous-integration/drone/push Build is passing Details

pull/47/head
Raphael LACOTE 2 years ago
parent 1f6aa89b69
commit caad23ffbe

@ -1,8 +1,8 @@
// import { Card5 } from "../Model/Card5"; //import { Card5 } from "../Model/Card5";
// import('../Model/Card5'); //import('../Model/Card5');
//import {Card} from '../Model/Card'; //import {Card} from '../Model/Card';
console.log("~#Test#~"); /*console.log("~#Test#~");
let card4 = new Card4WithoutOutline('red','2','losange','full'); let card4 = new Card4WithoutOutline('red','2','losange','full');
console.group('Carte 4 attributes'); console.group('Carte 4 attributes');
console.log(`carte de 4 elements : ${card4.color}`); console.log(`carte de 4 elements : ${card4.color}`);
@ -110,14 +110,39 @@ for (let i=0; i<26;i++){
console.log(e.getAttributes()); console.log(e.getAttributes());
}); });
} }
deck.checkSet(customCard); deck.checkSet(customCard);*/
// CREATE HYPERSET // CREATE HYPERSET
let Hcard1 = new Card4WithoutOutline('red', '3', 'diamond', 'full'); function checkList(list) {
let Hcard2 = new Card4WithoutOutline('red', '2', 'diamond', 'full'); // Vérifier si tous les éléments sont identiques
let Hcard3 = new Card4WithoutOutline('blue', '2', 'diamond', 'stripped'); if (list.every(element => element === list[0])) {
let Hcard4 = new Card4WithoutOutline('green', '3', 'diamond', 'empty'); return 1;
}
if ([...new Set(list)].length === list.length) {
return 0;
}
// Si tous les éléments ne sont ni identiques ni différents
return 2;
}
// Exemple d'utilisation
const list1 = [1, 2, 3, 4];
console.log(checkList(list1)); // Retourne 0
const list2 = [1, 1, 1, 1];
console.log(checkList(list2)); // Retourne 1
const list3 = [1, 2, 3, 1];
console.log(checkList(list3)); // Retourne 2
let Hcard1 = new Card4WithoutOutline('red', 3, 'wave', 'full');
let Hcard2 = new Card4WithoutOutline('red', 3, 'oval', 'empty');
let Hcard3 = new Card4WithoutOutline('blue', 2, 'oval', 'full');
let Hcard4 = new Card4WithoutOutline('green', 1, 'wave', 'full');
deckA = []; deckA = [];
deckB = []; deckB = [];
@ -128,3 +153,18 @@ deckB.push(Hcard3);
deckB.push(Hcard4); deckB.push(Hcard4);
console.log(isHyperset(deckA, deckB)); console.log(isHyperset(deckA, deckB));
let Icard1 = new Card5('red', 4, 'oval', 'empty','fullO');
let Icard2 = new Card5('red', 3, 'oval', 'full','fullO');
let Icard3 = new Card5('red', 2, 'oval', 'squared','fullO');
let Icard4 = new Card5('green', 2, 'oval', 'pointed','cloudy');
let Icard5 = new Card5('blue', 3, 'oval', 'squared','sharpy');
let Icard6 = new Card5('purple', 4, 'oval', 'full','hyphen');
deckAA = [];
deckBB = [];
deckAA.push(Icard1, Icard2, Icard3);
deckBB.push(Icard4, Icard5, Icard6);
console.log(isHyperset(deckAA, deckBB));

@ -2,5 +2,7 @@ const tabColor = ['red','purple','green','blue','orange'];
const tabNumber = [1,2,3,4,5]; const tabNumber = [1,2,3,4,5];
const tabShape = ['diamond','oval','wave','star','triangle']; const tabShape = ['diamond','oval','wave','star','triangle'];
const tabFilling = ['empty','stripped','full','pointed','squared']; const tabFilling = ['empty','stripped','full','pointed','squared'];
const tabOutline = ['full','dotted ','hyphen','cloudy','sharpy']; const tabOutline = ['fullO','dotted ','hyphen','cloudy','sharpy'];
const ATTRIBUTES=[tabColor,tabNumber,tabShape,tabFilling,tabOutline] const ATTRIBUTES = [tabColor, tabNumber, tabShape, tabFilling, tabOutline]
//Rename tabOutline

@ -1,4 +1,4 @@
import('./Model/Card.js') //import('./Model/Card.js')
function isSet(cards) function isSet(cards)
@ -131,77 +131,113 @@ function setsCounter(deck, numberForSet){
console.error('The number of cards in a Set is not existing', numberForSet) console.error('The number of cards in a Set is not existing', numberForSet)
} }
function createElements(attributs1, attributs2) { function createElements(attributsCartes, listeAttributs) {
if (attributs1 in tabColor) { let l = []
tabColor.forEach(element => { let verif;
if (element != attributs1) { listeAttributs.forEach(element => {
if (element != attributs2) { verif = false;
return element; attributsCartes.forEach(attribCartes => {
} if (element == attribCartes) {
} verif = true;
});
}
if (attributs1 in tabNumber) {
tabNumber.forEach(element => {
if (element != attributs1) {
if (element != attributs2) {
return element;
}
}
});
}
if (attributs1 in tabShape) {
tabShape.forEach(element => {
if (element != attributs1) {
if (element != attributs2) {
return element;
}
}
});
}
if (attributs1 in tabFilling) {
tabFilling.forEach(element => {
if (element != attributs1) {
if (element != attributs2) {
return element;
}
} }
}); })
} if (verif == false) {
if (attributs1 in tabOutline) { l.push(element);
tabOutline.forEach(element => { }
if (element != attributs1) { });
if (element != attributs2) { return l
return element; }
}
} 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) { function createCard(cards) {
let attributesMatrix = []; let attributesMatrix = [];
let carteFinale = []; let carteFinale = [];
let listeInter = [];
cards.forEach(element => { cards.forEach(element => {
attributesMatrix.push(element.getAttributes()); attributesMatrix.push(element.getAttributes());
}); });
for (let i = 0; i < attributesMatrix[0].length; i++) { for (let i = 0; i < attributesMatrix[0].length; i++) {
if (attributesMatrix[0][i] == attributesMatrix[1][i]) { listeInter = [];
carteFinale.push(attributesMatrix[0][i]); attributesMatrix.forEach(element => {
listeInter.push(element[i]);
});
//S'ils sont tous égaux
if (listeInter.every(element => element === listeInter[0])) {
carteFinale.push(listeInter[0]);
} }
else { else {
carteFinale.push(createElements(attributesMatrix[0][i], attributesMatrix[1][i])) //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; return carteFinale;
} }
function isHyperset(cardsLeft, cardsRight) { function isHyperset(cardsLeft, cardsRight) {
return createCard(cardsLeft).join() == createCard(cardsRight).join(); left = createCard(cardsLeft)
right = createCard(cardsRight)
let verif;
for (let i = 0; i < left[0].length; i++) {
verif = false;
left.forEach(elementG => {
right.forEach(elementD => {
if (elementD == elementG) {
verif=true
}
})
})
if (verif == false) {
return false;
}
}
return true;
} }

Loading…
Cancel
Save