我尝试使用两个列表来确定列表是否相交。x1c 0d1x就我所知,范围1不应与范围2相交,所以它应该吐出一个空的列表。2然而,正如你在列表中看到的,我得到的数字甚至从来没有包括在提供的两个范围内。3我做错了什么还是这是一个奇怪的bug?我已经把这个喂给了OpenAI聊天机器人,它也同意我的看法,这不应该发生。(顺便说一句,很酷的机器人)。
感谢您的帮助!
代码:
public void Challenge2()
{
List<(Int32 min1, Int32 max1, Int32 min2, Int32 max2)> _numbers = new(){(64, 67, 43, 63)};
Int32 count = 0;
foreach ((Int32 min1, Int32 max1, Int32 min2, Int32 max2) in _numbers)
{
//if (min1 <= max2 && max2 > min2 || min2 <= max1 && max1 > min1)
var s = Enumerable.Intersect(Enumerable.Range(min1, max1), Enumerable.Range(min2, max2));
if (Enumerable.Intersect(Enumerable.Range(min1, max1), Enumerable.Range(min2, max2)).Any())
{
count++;
}
}
}
1条答案
按热度按时间w6mmgewl1#
我认为这里的基本问题是你对
Enumerable.Range
参数的理解。如果你看the documentation for Enumerable.Range(Int32, Int32),你会发现第一个int
参数是start
数字,第二个int
参数是count
。因此,你应该像这样创建你的范围:另外,也不需要计算两次(在
if
条件下进行第二次计算)。我不清楚count
变量应该表示什么,但可能适用以下情况之一: