Ik heb de nummers iets aangepast, zodat je niet steeds 2 <=> 2 hebt. Zeg: Bak 1: [Groen, Blauw, Zwart, Rood, Wit] - 4 trekkingen Bak 2: [Groen, Geel, Blauw, Zwart, Oranje, Paars] - 4 trekkingen Bak 3: [Geel, Blauw, Rood, Paars, Grijs] - 3 trekkingen Uit bak 1 heb je simpelweg (count(bak 1) over count(trekking 1)) = (5 over 4) = 5 combinaties. Pas bij bak 2 moet je rekening houden met eerdere bakken. Overlap tussen bak 1 en 2 is: Groen, Blauw, Zwart (3 stuks) Het minimum aantal ballen dat je uit bak 1 trekt, dat overlapt met ballen uit bak 2, bereken je zo: max(0, count(aantal overlappende ballen) - (count(bak 1) - count(trekking 1))) = 2 Het maximum bereken je zo: MIN(count(trekking 1), count(overlappende ballen)) = 3 Je doet hetzelfde met bak 2. Minimum = 1, maximum = 3. Let op dat deze minima en maxima gelden over het totaal aantal overlappende ballen! Stel, we trekken: - Bak 1: Groen, Blauw, Rood, Wit - Bak 2: Geel, Zwart, Oranje, Paars In beide hebben we "in principe overlappende" ballen, maar de trekkingen vertonen zelf geen overlap! (Al is dat natuurlijk wel mogelijk.) Je gaat nu itereren over alle mogelijkheden. Voor bak 1 geldt: - 2 overlappende ballen: 1: (3 over 2) * (5-3 over 4-2) = 3 (Lees: kies uit 3 overlappende ballen 2 stuks, de 2 aan 't begin van de regel, en kies uit 5-3=2 unieke ballen nog 4-2=2 ballen om de trekking te voltooien.) - 3 overlappende ballen: 1: (3 over 3) * (5-3 over 4-3) = 2 Som is 3+2 = 5, en dat is (5 over 4) (zie ook bovenaan), onthoud en dan herinner deze 3 en 2 combinaties voor hieronder. Dan ga je itereren over 't kruisproduct van 2..3 (bak 1) en 1..3 (bak 2): - 2, 1: het aantal mogelijkheden voor overlap is: max(0, count(aantal overlappende ballen) - (2+1)) = max(0, 3 - (2+1)) = 0, en min(2, 1) = 1, dus 0 t/m 1 Per mogelijkheid: - 0 overlap tussen beiden: de 2 overlappende ballen uit de trekking van bak 1 zijn verboden, dus er is 1 overlappende bal van de 3 totaal over, en er moeten nog 4-1=3 worden getrokken uit de count(bak 2) - aantal overlappende ballen = 6-3 = 3 niet-overlappende ballen, dus (3 over 3): 1 * (3 over 3) = 1 Er is dus 1 mogelijkheid met 0 overlap tussen beiden, gegeven trekking 1. Er zijn 3 trekkingen mogelijk uit bak 1 (herinner hierboven), dus 3 * 1 = 3 mogelijkheden. - 1 overlap tussen beiden: er moet precies één bal uit die twee worden gekozen, dus (2 over 1) en dan nog 4-1=3 uit de 3 niet-overlappende ballen + de 1 overlappende bal die in trekking 1 _niet_ is gekozen, dus (4 over 3): (2 over 1) * (4 over 3) = 8. Over het algemeen geldt voor de formule hierboven: 2: aantal overlappende ballen uit trekking uit bak 1 1: aantal overlap tussen beiden 4: count(bak 2) - aantal overlappende ballen uit trekking uit bak 1 3: count(trekking 2) - aantal overlap tussen beiden Er zijn hier dus 8 mogelijkheden, * de 3 van boven (herinner) = 24. - 2, 2: 1 t/m 2, idem hierboven - 2, 3: 2 t/m 2, idem hierboven - 3, 1: 1 t/m 1, idem hierboven - 3, 2: 2 t/m 2, idem hierboven - 3, 3: 3 t/m 3, idem hierboven Met meer dan 2 bakken lukt 't nu vast ook ;)