Ik loop stuk om een manier te vinden die unieke combinaties maakt van een x aantal termen, waarbij er steeds meer termen afvallen. Bijv: ik heb 5 termen, 1, 2, 3, 4, 5
De eerste combinatie is 12345
Hierna valt er steeds 1 term weg:
1234 - 5
1235 - 4
1245 - 3
1345 - 2
2345 - 1
Hierna vallen er 2 weg
123 - 45
124 - 35
125 - 34
134 - 25
135 - 24
145 - 23
234 - 15
235 - 14
245 - 13
345 - 12
De termen die wegvallen vormen tegelijkertijd ook een unieke combinatie.
Stel ik heb 6 termen en er vallen er 3 weg, dan vormen de wegvallende termen de andere helft van de combinaties met 3.
123 - 456
124 - 356
125 - 346
126 - 345
134 - 256
135 - 246
136 - 245
145 - 236
146 - 235
156 - 234
Wat ik hieraan over wil houden is een array met alle mogelijke unieke combinaties.
Ik kom er zelf momenteel niet helemaal uit om dit te maken. Ik heb een begin gemaakt, maar dit wordt veel te omslachtig. Kan iemand mij misschien een schopje in de goede richting geven?
De eerste combinatie is 12345
Hierna valt er steeds 1 term weg:
1234 - 5
1235 - 4
1245 - 3
1345 - 2
2345 - 1
Hierna vallen er 2 weg
123 - 45
124 - 35
125 - 34
134 - 25
135 - 24
145 - 23
234 - 15
235 - 14
245 - 13
345 - 12
De termen die wegvallen vormen tegelijkertijd ook een unieke combinatie.
Stel ik heb 6 termen en er vallen er 3 weg, dan vormen de wegvallende termen de andere helft van de combinaties met 3.
123 - 456
124 - 356
125 - 346
126 - 345
134 - 256
135 - 246
136 - 245
145 - 236
146 - 235
156 - 234
Wat ik hieraan over wil houden is een array met alle mogelijke unieke combinaties.
Ik kom er zelf momenteel niet helemaal uit om dit te maken. Ik heb een begin gemaakt, maar dit wordt veel te omslachtig. Kan iemand mij misschien een schopje in de goede richting geven?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| $terms = array('term1','term2','term3','term4','term5'); $number_of_terms = count($terms); $array = array(); for($a=0;$a<$number_of_terms;$a++) { if($a == 0) { //alles $array[] = implode('',$terms); // done = x termen } else if($a == 1) { for($b=($number_of_terms-1);$b>=0;$b--) { $tmp_terms = $terms; unset($tmp_terms[$b]); $array[] = implode('',$tmp_terms); $array[] = $terms[$b]; } // done = 1 term, x termen // todo = 2 en x termen } else if($a == 2) { // 2 en x termen } } |