You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求欧几里得坐标系矩形计数问题的边缘测试用例

非零面积矩形统计代码的边缘测试场景

给定欧几里得坐标系中的点列表,统计其中任意4个点可构成的不同非零面积矩形(无需轴对齐)的数量。现有实现代码如下,以下是可验证代码的边缘测试场景:

def countRectangles(intPoints):
    ans = 0
    
    def getDistance(point1, point2):
        x1, y1 = point1[0], point1[1]
        x2, y2 = point2[0], point2[1]
        
        return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)
    
    def getMidPoint(point1, point2):
        x1, y1 = point1[0], point1[1]
        x2, y2 = point2[0], point2[1]
        midPoint = ((x1 + x2) / 2, (y1 + y2) / 2)
        
        return midPoint
    
    def intToFloatList(points):
        for i, point in enumerate(points):
            curX, curY = point[0], point[1]
            points[i] = (float(curX), float(curY))
        return points
    
    distanceMidPoint_PointsMap = {}
    
    points = intToFloatList(intPoints)
    
    for i, point in enumerate(points):
        
        for j in range(i+1, len(points)):
            nextPoint = points[j]
            
            curSqrdDistance = getDistance(point, nextPoint)
            curMidPoint = getMidPoint(point, nextPoint)
            key = (curSqrdDistance, curMidPoint)
            
            if key not in distanceMidPoint_PointsMap:
                distanceMidPoint_PointsMap[key] = set()
            distanceMidPoint_PointsMap[key].add((point, nextPoint))
              
    for key, val in distanceMidPoint_PointsMap.items():
        if len(val) > 1:
            ans += len(val)
    return ans // 2

边缘测试场景

  • 点数量不足4个的情况

    • 测试用例:[(0,0), (1,1), (2,2)](3个点)
    • 预期结果:返回0,无法组成4点矩形
  • 所有点共线的情况

    • 测试用例:[(0,0), (1,0), (2,0), (3,0), (4,0)](5个共线点)
    • 预期结果:返回0,共线点无法构成非零面积矩形
  • 包含重复点的情况

    • 测试用例1:[(0,0), (0,0), (1,1), (1,1)](两对重复点)
    • 预期结果1:返回0,重复点无法组成非零面积矩形
    • 测试用例2:[(0,0), (0,0), (0,1), (1,0), (1,1)](含一个重复点的5个点)
    • 预期结果2:返回1,仅能组成唯一的轴对齐矩形
  • 多条线段共享同一中点与长度的情况

    • 测试用例:[(0,0), (2,2), (0,2), (2,0), (1,3), (1,-1)](3条线段共享中点(1,1)且平方距离均为8)
    • 预期结果:返回3,三条线段两两组合可形成3个不同矩形
  • 顶点为整数但中点为小数的非轴对齐矩形

    • 测试用例:[(0,0), (3,4), (1,5), (2,-1)](对角线中点为(1.5,2),平方距离均为25)
    • 预期结果:返回1,该4点可构成一个非轴对齐矩形
  • 大量散点仅含少量有效矩形的情况

    • 测试用例:96个随机散点 + [(0,0), (0,2), (2,2), (2,0)](仅这4点能构成矩形)
    • 预期结果:返回1
  • 共中点但距离不同的线段(无法构成矩形)

    • 测试用例:[(0,0), (2,2), (0,3), (2,-1)](两条线段中点均为(1,1),但平方距离分别为8和10)
    • 预期结果:返回0,不满足矩形对角线的距离相等条件
  • 含负数坐标的非轴对齐矩形

    • 测试用例:[(-1,-1), (-3,2), (0,4), (2,1)](对角线中点为(-0.5,1.5),平方距离均为26)
    • 预期结果:返回1,该4点可构成一个非轴对齐矩形
  • 多个重叠矩形的情况

    • 测试用例:[(0,0), (0,2), (2,2), (2,0), (0,1), (1,2), (2,1), (1,0)](两个重叠的矩形)
    • 预期结果:返回2,两个不同的4点组合各构成一个矩形

内容的提问来源于stack exchange,提问作者confused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:25:35