2015-05-03 4 views
1

Как написать простую в использовании комбо-систему из 3 элементов на C#?Написание комбо-системы

Пример: Мы играем с нашей палубе

Card A 
Card B 
Card C 

Это делает некоторые супер удивительный комбо называется Combo Ультра-карты (независимо). Теперь это легко писать, если порядок имеет значение:

if(cards[0] == "Card A"){ 
    if(cards[1] == "Card B" && cards[2] == "Card C"){ 
    doComboThingy(); 
    } 
} 

Но теперь нам нужно все 6 комбинаций

A/B/C 
A/C/ B 
B/A/C 
B/C/A 
C/B/A 
C/A/B 

Я думаю, что это, вероятно, было решать 100000s раз, а может быть, есть алгоритм, все знают, около. Но я не могу найти его!

Спасибо.

+0

Вы можете просто отсортировать список сыгранных карт, тогда вам нужно только проверить A/B/C. – Blorgbeard

+0

Я думаю, что это не просто вопрос сортировки ... но вложенный, если это необходимо для его выполнения и насколько сложны это становится так, как ему нужны другие комбо-комбинации. Красота использования LINQ заключается в том, что она пробивает ваше намерение: у вас есть коллекция, и вы хотите знать, совпадает ли она с другой коллекцией независимо от порядка. Кроме того, я не знаю, будут ли карты иметь только 3 элемента. Если у него больше 3, и вам нужно найти все 3 комбинированные карты в большой коллекции, это еще больше увеличивает сложность. – dmyoko

ответ

0

Вы можете просто использовать LINQ:

Учитывая у вас есть коллекция комбинированных карт

var comboCards = new [] {"Card A", "Card B", "Card C"}; 

if(cards.Intersect(comboCards).Count() == comboCards.Count()) 

Это означает, что вы принимаете вашу коллекцию карт и получать элементы пересекаться с комбинированными картами. Результат должен иметь одинаковое количество ваших комбинированных карт.

+0

Звучит очень просто. Но я прочитал, что есть проблемы с Linq и IOS, для которых я разрабатываю. Любая идея, если это все еще так? – user3822370

+0

Я думаю, что это суровый тест. Я только что нашел много вопросов относительно LINQ в iOS, но все они до 2013 года, и даже тогда, кажется, люди не были уверены в этом. Если это все еще проблема, похоже, что недавно кто-то ее разрешил с помощью этого: http://forum.unity3d.com/threads/released-linq-to-ios.274088/ – dmyoko

+0

@dmyoko У меня, конечно, был тот же выпусков еще в 2014 году, но при выпуске IL2CPP они, возможно, уже закончились. –

Смежные вопросы