检查数组中的多个元素是不是包含相同的值

Posted

技术标签:

【中文标题】检查数组中的多个元素是不是包含相同的值【英文标题】:Check if multiple elements in an array contain the same value检查数组中的多个元素是否包含相同的值 【发布时间】:2019-04-27 13:16:41 【问题描述】:

例如,我有一个用随机数填充的数组,我将把它称为一个骰子。

Random rnd = new Random()
int[] dice=new int [5]
for (int i=0;i<dice.length;i++)

dice[i]= rnd.next(1,7)

现在,为了简单起见,我想问一下我如何才能知道是否有一个实例中的三个。

【问题讨论】:

int[] dice=new dice [5] 不确定这是否编译 @HanjunChen 在我的原始代码中,我将骰子作为一个类,因此我的数组就像这样(public Dice[] dices = new Dice[5];),这就是为什么我犯了这个非常小的错误写问题。然而,你在问题中看到的唯一一件事就是这个!真的很有帮助 【参考方案1】:

使用IDictionary&lt;int,int&gt;

var dict = new Dictionary<int,int>();
foreach (int i in dice)
    if(!dict.ContainsKey(i))
        dict.Add(i,1);
    else dict[i]++;

(可选)您可以使用 Linq 获取多次出现的数字

var duplicates = dict.Where( x=>x.Value > 1 )
  .Select(x=>x.Key)
  .ToList();

【讨论】:

【参考方案2】:
    // preparation (basically your code)
    var rnd = new Random();
    var dice = new int[5];

    for (int i=0; i < dice.Length; i++)
    
        dice[i]= rnd.Next(1,7);
    

    // select dices, grouped by with their count
    var groupedByCount = dice.GroupBy(d => d, d => 1 /* each hit counts as 1 */);

    // show all dices with their count
    foreach (var g in groupedByCount)
        Console.WriteLine(g.Key + ": " + g.Count());

    // show the dices with 3 or more 
    foreach (var g in groupedByCount.Where(g => g.Count() >= 3))
        Console.WriteLine("3 times or more: " + g.Key);

【讨论】:

【参考方案3】:

给出一个完全不同的方法,而不是:

Random rnd = new Random();
int[] dice=new int[5];
for (int i=0;i<dice.length;i++)

    dice[i]= rnd.next(1,7);

试试这个:

Random rnd = new Random();
int[] valueCount = new int[6];
for (int i=0; i<5; i++)

    valueCount[rnd.next(0,6)]++;


//you have kept track of each value.
if (valueCount.Any(c => c == 3))
    //3 of a kind

当然你可以两者结合....

请注意,这适用于真正特定的规则引擎,针对事件计数进行了优化。

如果你真的想要一个纸牌/骰子游戏,你需要重新考虑规则引擎来解决类似 “是吗:1,2,3,4,5,6 之类的规则,并且按照这个顺序?”.

为此,请尝试:How to implement a rule engine?

【讨论】:

以上是关于检查数组中的多个元素是不是包含相同的值的主要内容,如果未能解决你的问题,请参考以下文章

检查 PHP 中的真实数组标识?

JQuery如何判断值中是不是包含某个值?

检查字符串是不是包含Python中数组中的多个元素

从表中的多个值中选择不在数组中的位置

如何检查字符串是不是包含数组中的任何元素[关闭]

如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中