数组中的所有元素是否满足由另一个字符串数组确定的特定条件

时间:2013-04-01 19:06:38

标签: c# arrays algorithm

对不起标题,但我不知道如何热切地解释我需要做什么。

我有这个预定义的数组:

string[] SkippedAreasArray = new string[] {"A", "B", "C", "D", "E", "F", "G",
            "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"};

我们可以拨打每个字母Area。我们有一个变量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",那么我们必须保持NumberOfAreas等于5跳过字母"A""C"并添加接下来的两个字母,以便NumberOfAreas变为 - "B", "D", "E", "F", "G"

我们只能跳过已经在NumerOfAreas范围内的字母(区域),例如,如果我们在NumerOfAreas = 5且字符串为"A", "B", "C", "D", "E"时得到基本示例只能跳过5个字母中的一个字母。但是,通过跳过任何字母,我们会打开对下一行的访问权限,因此,如果我们第一次跳过"A",我们可以免费使用"F"进行下一轮,如果"F"是来自用户输入字符串SkippedAreas然后跳过"F"并打开"G"是合法的。

我需要一种能够验证用户输入的算法。

1 个答案:

答案 0 :(得分:6)

使用LINQ

var FilteredAreas = 
    ListOfAreas.Where(a => !SkippedAreas.Contains(a)).Take(NumberOfAreas);