计数相同的数字(如果出现不止一次),仅一次出现

时间:2018-09-22 16:14:53

标签: c#

所以我不熟悉c Sharp,一直在研究我的代码,但无法弄清楚。 假设我有以下内容:

Code : 2 1 1 1 1 2
Guess: 2 2 1 2 2 1

首先,忽略猜测与代码匹配的地方。之后,只有

  

2 2 2 1

将留给猜测和

  

1 1 1 2

获取代码

如果您看到其余的代码,则猜测有3个2,但是代码中只有1个。我想将三个2算作一次,但是我的代码部分占了所有3个,我似乎无法将其算作一个。

这是我的代码。我只张贴有麻烦的部分。

if (guess.Contains(Code[i]))
{
       if (guess.Distinct().Count() > 1)
       diffSpot++;
}

我尝试使用distinct仅仅获得唯一数字,并计数以查看如果其大于1,则表示存在重复(连续发生相同),但我想我错过了一些东西。感谢您提供任何有用的提示和建议。

1 个答案:

答案 0 :(得分:0)

假设您所追求的是:

enter image description here

我有点喜欢LINQ:

using System.Linq;
int[] Code = {2, 1, 1, 1, 1, 2};
int[] Guess = {2, 2, 1, 2, 2, 1};
int total =
     Guess.Select((g, i) => new {g, i})
    .Where(x => x.g != Code[x.i])
    .Select(x => x.g).Distinct().Count();

返回2。 希望这会有所帮助。