数字の可能な組み合わせをすべてどのように生成することができますか?たとえば、私はこれを持っている場合arrayOfNumbers = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;
数字の組み合わせを生成するためのコードのレビュー
できるだけ多くの6数字の組み合わせを生成する必要があります。
これらの組み合わせは、私に、私はいくつかの非常に簡単コードを思い付く1,2,3,4,5,6 == 1,3,2,5,4,6;
に同じですが、私はこのコードははるかに良いようにしたいと思います。 maximumPossibilities
と宣言せずに何とかしてもいいですか?総数は時々異なる場合がありますが、1から48までです。 countOfNumbersForPlay
は、6〜11と異なる場合があります。
+ (NSArray *)generateNumbers{
int MAX_POSSIBILITIES = 7;
int COUNT_OF_NUMS_FOR_PLAY = 6;
NSMutableArray *results = [NSMutableArray array];
NSArray *numbers = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], [NSNumber numberWithInt:4], [NSNumber numberWithInt:5], [NSNumber numberWithInt:6], [NSNumber numberWithInt:7], nil];
int i = 0;
do {
int x = 0;
NSMutableArray *temp = [NSMutableArray array];
do {
int randomIndex = rand() % numbers.count;
if (![temp containsObject:[numbers objectAtIndex:randomIndex]]) {
[temp addObject:[numbers objectAtIndex:randomIndex]];
x++;
}
} while (x < COUNT_OF_NUMS_FOR_PLAY);
NSArray *sortedArray = [temp sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if ([obj1 intValue] < [obj2 intValue]) {
return NSOrderedAscending;
} else if ([obj1 intValue] > [obj2 intValue]) {
return NSOrderedDescending;
} else {
return NSOrderedSame;
}
}];
if (![results containsObject:sortedArray]) {
[results addObject:sortedArray];
i++;
}
} while (i < MAX_POSSIBILITIES);
return results;
}
これはC++コードですか? –
http://ja.wikipedia.org/wiki/Combination - それはあなたが欲しいものですか? – n0rd
はい、私が必要とするものですが、どうすればxcode C++でそれを行うことができますか?私の解決策は私にとっては十分ではありません。 – user1040420