Algorithm 获取数字范围交叉点
除了这个问题,我想得到两个时间范围的交点范围。所以我的问题是Algorithm 获取数字范围交叉点,algorithm,math,Algorithm,Math,除了这个问题,我想得到两个时间范围的交点范围。所以我的问题是 获得两个数字范围相交的时间范围的有效数学/算法方法是什么 从第二个范围的每个端点减去第一个范围的每个端点。如果您有: 所有正或负结果:范围不相交 一个非负或负结果:交点是该结果的操作数 两个非负结果:范围是两个计算中的非公共操作数 所有结果都是0:有史以来最简并的范围 vectors = ( ((1, 3), (2, 4), '2-3'), ((1, 4), (2, 3), '2-3'), ((1, 2), (3, 4
获得两个数字范围相交的时间范围的有效数学/算法方法是什么 从第二个范围的每个端点减去第一个范围的每个端点。如果您有:
- 所有正或负结果:范围不相交
- 一个非负或负结果:交点是该结果的操作数
- 两个非负结果:范围是两个计算中的非公共操作数李>
- 所有结果都是0:有史以来最简并的范围
vectors = ( ((1, 3), (2, 4), '2-3'), ((1, 4), (2, 3), '2-3'), ((1, 2), (3, 4), 'Disjoint'), ((2, 4), (1, 3), '2-3'), ((2, 3), (1, 4), '2-3'), ((3, 4), (1, 2), 'Disjoint'), ) for a, b, c in vectors: print c, a, b for x in a: for y in b: print x, y, x-y
- 所有正或负结果:范围不相交
- 一个非负或负结果:交点是该结果的操作数
- 两个非负结果:范围是两个计算中的非公共操作数李>
- 所有结果都是0:有史以来最简并的范围
vectors = ( ((1, 3), (2, 4), '2-3'), ((1, 4), (2, 3), '2-3'), ((1, 2), (3, 4), 'Disjoint'), ((2, 4), (1, 3), '2-3'), ((2, 3), (1, 4), '2-3'), ((3, 4), (1, 2), 'Disjoint'), ) for a, b, c in vectors: print c, a, b for x in a: for y in b: print x, y, x-y
我今天累了……;-) 这个伪C应该起到以下作用:
R_TYPE Intersection(P_TYPE start1, P_TYPE start2, P_TYPE end1, P_TYPE end2)
{
if(max(start1, start2) <= min(end1, end2))
{
return( min(end1, end2) - max(start1, start2) );
}
return(DISJOINT);
}
您可能仍然可以通过直接比较值(假设使用小尾端和8位寻址)来获得,但在减去单个天数、分钟等时,您必须考虑进位和下溢。此伪C应该可以做到:
R_TYPE Intersection(P_TYPE start1, P_TYPE start2, P_TYPE end1, P_TYPE end2)
{
if(max(start1, start2) <= min(end1, end2))
{
return( min(end1, end2) - max(start1, start2) );
}
return(DISJOINT);
}
您可能仍然能够通过直接比较值(假设使用小尾端和8位寻址)获得,但在减去个别天数、分钟等时,您必须考虑进位和下溢。如果有人需要javascript版本,请参见:
function findRangeIntersection(a1, a2, b1, b2) {
if (Math.max(a1, b1) <= Math.min(b2, a2)) {
return Math.min(a2, b2) - Math.max(a1, b1);
}
return Number.NaN;
}
功能FindRange交叉点(a1、a2、b1、b2){
if(Math.max(a1,b1)如果有人需要javascript版本,请点击此处:
function findRangeIntersection(a1, a2, b1, b2) {
if (Math.max(a1, b1) <= Math.min(b2, a2)) {
return Math.min(a2, b2) - Math.max(a1, b1);
}
return Number.NaN;
}
功能FindRange交叉点(a1、a2、b1、b2){
if(Math.max(a1,b1)您想要交叉点还是联合?交叉点抱歉(后期编辑)您想要交叉点还是联合?交叉点抱歉(后期编辑)