如何在C#中编写一个易于维护的至少3个项目的组合系统?
示例:我们从我们的牌组中进行游戏
Card A
Card B
Card C
这是一些非常棒的组合叫做Ultra Card 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
我认为这可能已经被解决了10万次,也许每个人都知道这个算法。但我找不到了!
感谢。
答案 0 :(得分:0)
你可以使用LINQ:
考虑到你有一系列组合卡
var comboCards = new [] {"Card A", "Card B", "Card C"};
if(cards.Intersect(comboCards).Count() == comboCards.Count())
这意味着您正在进行卡片收集并使用组合卡获取交叉项目。结果应该与您的组合卡数相同。