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

使用Python比较两个集合并验证元素间是否存在统一数学关系

检查两个集合的统一数学关系

解决方案代码

def check_uniform_relation(set1, set2):
    # 长度不一致直接返回无统一关系
    if len(set1) != len(set2):
        return "无统一关系"
    
    # 集合转有序列表,确保元素按大小匹配
    sorted1 = sorted(set1)
    sorted2 = sorted(set2)
    
    x0, y0 = sorted1[0], sorted2[0]
    possible_relations = []
    
    # 计算乘法因子(y = x * k)
    if x0 != 0:
        k_mult = y0 / x0
        possible_relations.append(("乘法", lambda x: x * k_mult, f"* {k_mult}"))
    
    # 计算加法因子(y = x + b)
    b_add = y0 - x0
    possible_relations.append(("加法", lambda x: x + b_add, f"+ {b_add}"))
    
    # 计算反向乘法(y = x / k,等价于x = y * k)
    if y0 != 0:
        k_div = x0 / y0
        possible_relations.append(("除法", lambda x: x / k_div, f"/ {k_div}"))
    
    # 验证每个关系是否适用于所有元素
    for rel_type, calc_func, rel_desc in possible_relations:
        valid = True
        for x, y in zip(sorted1, sorted2):
            # 处理浮点数精度误差
            if abs(calc_func(x) - y) > 1e-9:
                valid = False
                break
        if valid:
            return f"存在统一{rel_type}关系:list2元素 = list1元素 {rel_desc}"
    
    return "无统一关系"

# 测试示例
set1 = {1,2,3,4,5,6,7,8,9,10}
set2 = {10,20,30,40,50,60,70,80,90,100}
print(check_uniform_relation(set1, set2))

代码说明

  1. 长度校验:两个集合长度不同时,无法形成一一对应的统一关系,直接返回结果。
  2. 有序化处理:集合本身是无序的,通过排序将元素按大小匹配,确保对应元素的关联性符合常规逻辑。
  3. 关系推导与验证:
    • 从第一对元素推导乘法、加法、除法三种常见数学关系
    • 遍历所有元素对验证关系的通用性,同时处理浮点数计算的精度误差
  4. 结果返回:找到有效统一关系则返回具体描述,否则返回"无统一关系"

扩展说明

如果需要支持幂次、平方等其他数学关系,只需在possible_relations列表中添加对应的推导逻辑和计算函数即可。比如添加平方关系:

# 示例:添加平方关系(y = x²)
possible_relations.append(("平方", lambda x: x**2, "的平方"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:55:22