notify = array(); foreach participant as p { p.current = null; if (p.set == p.fav) { // alte Farbe war schon perfekt p.current = p.set; } else { // alte Farbe war nicht Lieblingsfarbe color = p.fav; while (p.current == null) { change = true; // prüfen, ob Lieblingsfarbe vergeben, und wenn ja, // ob dies auf Präferenz beruht foreach participant as p2 { if (p2 != p && (p2.set == color == p2.fav || p2.current == color )) { // Farbe ist auch Lieblingsfarbe von // anderem Teilnehmer und bereits vergeben change = false; break; } } if (change) { // nur wenn kein Konflikt, Farbe zuweisen p.current = color; notify.push(p); } else { // sonst nächste freie Farbe prüfen. color = color + 1; } } } }