我有一个添加新定价规则的功能,每个定价规则有两个范围(A_Low,A_High)(B_Low,B_High)。当函数想要添加新价格时,需要确保范围不重叠,使得每个输入的A和B值只能匹配1个所述定价规则。 A& B可以是正数或负数。
逻辑的一个例子:
规则1:A_Low = 0.0,A_High = 1.0; B_Low 0.0,B_High = 0.25
如果我尝试添加以下规则:
案例1:A_Low = 0.5,A_High = 1.5; B_Low 0.26,B_High = 1.0
应该允许上述测试用例,如果B没有,A可以重叠,如果A没有,B可以重叠。我有一个问题包围我正确的逻辑,以评估和确定我试图添加的价格规则是否有效...我知道有检查重叠日期的函数,是否有一个重叠数值范围?< / p>
我仍然无法弄清楚我的错误,这是我的示例代码:
For Each p In Rules
If p.A_Max > A_Min And p.A_Min < A_Max Then
If p.B_Max> B_Min And p.B_Min < B_Max Then
Return False
End If
End If
If p.B_Max> B_Min And p.B_Min < B_Max Then
If p.A_Max > A_Min And p.A_Min < A_Max Then
Return False
End If
End If
Next
Return True
答案 0 :(得分:0)
这可以提供帮助:intervals collection class。它是用C#编写的,但编码非常简单,很容易理解。适应您的需求应该相对简单。
答案 1 :(得分:0)
如果存在重叠
,则返回trueRule_High&gt; Case_Low和Rule_Low&lt; CASE_HIGH
您只需要检查A和B,如果两者都重叠,那么您就会出错。
如果您有类似的内容,也可以检测到重叠:
案例1:A_Low = 0.5,A_High = 0.7; B_Low -1,B_High = 2