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

基于SymPy实现统计表达式两两相交次数的num_intersections函数

函数实现要求
  • 函数名:num_intersections(expressions)
  • 入参:字符串格式的表达式列表,所有表达式仅含1个未知数,列表长度始终大于1且无重复元素
  • 返回值:列表,每个元素对应原位置表达式与其余所有表达式的相交总次数
  • 可用工具:SymPy已以别名sp导入当前环境,可直接调用parse_expr()方法解析表达式
实现思路

遍历所有不重复的表达式对,计算每对的交点数后分别累加到两个表达式对应的计数中,避免重复计算。交点数计算逻辑参考给定的参考方法,通过求解两个表达式相等的根的数量得到。

完整代码
from sympy.parsing.sympy_parser import parse_expr

def check_intersection(exp1, exp2):
    """计算两个表达式的交点数量"""
    equ1 = parse_expr(exp1)
    equ2 = parse_expr(exp2)
    return len(sp.solve(equ1 - equ2))

def num_intersections(expressions):
    n = len(expressions)
    res = [0] * n
    # 遍历所有不重复的表达式对
    for i in range(n):
        for j in range(i + 1, n):
            cnt = check_intersection(expressions[i], expressions[j])
            res[i] += cnt
            res[j] += cnt
    return res
测试用例验证

测试用例1

输入:

print(num_intersections(["x ** 2 - 1", "0.25 * x - 1"]))

预期输出:[2, 2],运行结果与预期一致。

测试用例2

输入:

print(num_intersections(["x ** 2 - 1", "0.25 * x - 1", "x + 1"]))

预期输出:[4, 3, 3],运行结果与预期一致。

结果说明:二次函数与两个一次函数各有2个交点,合计4;每个一次函数和二次函数有2个交点、和另一个一次函数有1个交点,合计3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:45:06