Je fais correspondre un tableau de personnes les uns aux autres. Ils ne peuvent pas être assortis à eux-mêmes et chaque personne ne peut être jumelée avec un autre. J'ai travaillé cela mais je suis tombé dans une affaire de bord. Si la personne jumelée est elle-même la seule personne à ne pas avoir été appariée, nous sommes bloqués.Faire correspondre un ensemble de personnes pour donner des cadeaux, comment gérer ce cas de bordure
Exemple:
$names = array('Dad','Mom','Harrald','Yu','Sandra','Dave', 'Andy & Kim');
$drawn = array();
$tn = count($names)-1;
$i = mt_rand(0, $tn);
foreach ($names as $name) {
while($name == $names[$i] || in_array($names[$i], $drawn)) {
$i = mt_rand(0, $tn);
}
echo $name. ' has ' . $names[$i].'<br />';
array_push($drawn, $names[$i]);
}
Cela pourrait produire:
Papa a Sandra
Maman a Yu
Harrald a Dave
... etc, etc.
Le problème est quand il arrive au dernier élément du tableau, 'Andy & Kim', si 'Andy & Kim' est le seul élément qui n'a pas encore été ajouté au $drawn
tableau alors nous avons un cas de carre parce que vous ne pouvez pas correspondre 'Andy & Kim' à eux-mêmes. Dans mon exemple, cela peut se traduire par être coincé dans cette boucle tout en finissant par expirer ... voyez ce que je veux dire? Comment pourriez-vous gérer cela (c'est uniquement pour mon propre amusement que je suis allé à assommer un cadeau rapide donnant un script de match-up pour ma mère à utiliser et réalisé que c'était un problème potentiel).
Oh, de meilleures façons d'implémenter un tel modèle seraient les plus intéressantes à voir. THX!
Évidemment. Mon point est, comment voulez-vous y faire face? Je pensais que quelqu'un penserait que c'était un travail à faire ... lol ... J'aimerais être assez jeune pour être encore étudiant. – Lothar
C'est vraiment un problème pour la façon dont vous aimeriez résoudre le problème. Mais si vous voulez dire, comment devriez-vous surcharger l'une des personnes déjà choisies avec une autre personne ... Choisissez-en une au hasard? Vous pourriez alors prendre ces 3 et en faire un anneau. Ou, faites le tout comme un grand anneau. Mon point. Ce n'est pas un problème de programmation, c'est un problème d'exigences. – DampeS8N
Mark a comment faire un anneau, correct. – DampeS8N