对不起标题,但我不知道如何简要解释我需要做什么。
我有这个预定义数组:
string[] SkippedAreasArray = new string[] {"A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"};
我们可以称每个字母为区域
。我们有一个变量NumberOfAreas
,它保存一个从0(null)到17的整数值。这个值的含义是这样的。如果 NumberOfAreas
= 5 那么我们有字符串 "A", "B", "C", "D", "E"
。如果 NumberOfAreas
= 3 那么我们有 "A"、"B"、"C"
等等。该字符串始终以 "A"
开头并遵循字母顺序。
用户输入是所谓的 SkippedAreas
数组。它可以包含随机字母,这些字母不能重复并且在 A-Q
范围内。
想法是什么 - 如果我们有 SkippedAreas
数组 = "A", "C"
和 NumberOfAreas
= 5 或 “A”、“B”、“C”、“D”、“E”
那么我们必须通过跳过字母 “A”来保持
和 NumberOfAreas
等于 5 "C"
并添加接下来的两个字母,使 NumberOfAreas
变为 - "B"、"D"、"E"、"F ", "G"
.
我们只能跳过已经在 NumerOfAreas
范围内的字母(区域),例如,如果我们在 NumerOfAreas
= 5 时得到基本示例并且字符串是“A”、“B”、“C”、“D”、“E”
我们只能跳过这 5 个字母之一的字母。但是,通过跳过任何字母,我们可以打开对行中下一个字母的访问,因此如果我们第一次跳过 "A"
,我们可以在下一轮中自由使用 "F"
,并且如果 "F"
是用户输入字符串 SkippedAreas
的一部分,那么跳过 "F"
并打开 "G"< 是合法的
。
我需要一种能够验证用户输入的算法。
最佳答案
使用 LINQ
var FilteredAreas =
ListOfAreas.Where(a => !SkippedAreas.Contains(a)).Take(NumberOfAreas);
关于c# - 数组中的所有元素是否满足由另一个字符串数组确定的特定条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749935/