Сравните 7 слов друг с другом, чтобы увидеть, равны ли 5 ​​из них. Как? - PullRequest
6 голосов
/ 04 марта 2010

У меня есть семь слов в массиве:

string[7] = {x,x,x,x,x,x,x};

x генерируется из другого массива:

string[4]={a,b,c,d};

это означает, что каждый х может быть либо a, либо b, либо c, либо d Это случайно генерируется. это может быть примером:

string[7]= {a,a,d,a,a,c,a}

мой вопрос: как я могу проверить, есть ли пять x, которые имеют одинаковое значение?

Это для покерного приложения, над которым я сейчас работаю.

Ответы [ 4 ]

10 голосов
/ 04 марта 2010

Вы можете использовать Linq, чтобы найти наибольшее количество одинаковых предметов и проверить, если это 5 или больше:

int maxCount = s.GroupBy(x => x).Select(x => x.Count()).Max();
3 голосов
/ 04 марта 2010

Вы можете сделать это так:

    List<string> values = new List<string> {"a", "a", "d","a", "a", "c", "a"};

    int count = values.FindAll(id => id == "a").Count();
1 голос
/ 04 марта 2010

Сортируйте массив, после этого вы уверены, что если есть пять или более одинаковых значений, среднее значение является одним из них. Посчитай сколько:

Array.Sort(words);
int cnt = 0;
Array.ForEach(words, s => { if (s == words[3]) cnt++; });
1 голос
/ 04 марта 2010

Вы можете сгруппировать похожие предметы и найти в любой группе пять или более

from word in new [] { "a", "a", "a", "b", "a", "a", "b" }
group word by word into wordGroup
where wordGroup.Count() >= 5
select wordGroup.Key
...