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

基于唯一值x,y,z生成所有合法四元素数组的技术实现需求

问题描述

给定三个唯一值x、y、z,需找出所有可能的唯一四元素数组:数组元素由x、y、z的乘积组合构成(包括单个值、两两乘积、三者乘积以及乘法单位元1),且每个数组中x、y、z各自仅被使用一次(即每个值要么单独作为数组元素,要么作为某个乘积的因子,且仅参与一次运算)。

参考简化示例:当给定x、y并生成两元素数组时,结果为:

[x*y, 1]
[x, y]
[1, x*y]
[y, x]

提供的Python骨架代码:

def f(x, y, z):
  """returns list of 4-element lists"""
  # ...
解决方案

思路分析

根据题目要求和示例模式,我们需要覆盖三种组合场景,生成每种场景下的所有排列后去重,得到最终的唯一数组:

  1. 三个单独元素+1:将x、y、z单独作为数组元素,补充1凑成四元素,生成所有排列。
  2. 两两乘积+单个元素+两个1:将x、y、z中的任意两个相乘得到乘积项,剩下的一个作为单独项,补充两个1凑成四元素,生成所有排列。
  3. 三者乘积+三个1:将x、y、z三者相乘得到总乘积项,补充三个1凑成四元素,生成所有排列。

借助itertools.permutations生成排列,利用集合自动去重,最后将结果转换为列表返回。

代码实现

from itertools import permutations

def f(x, y, z):
    """返回所有符合要求的四元素列表"""
    unique_arrays = set()
    
    # 场景1:三个单独元素 + 1的所有排列
    for perm in permutations([x, y, z, 1]):
        unique_arrays.add(perm)
    
    # 场景2:两两乘积 + 单个元素 + 两个1的所有排列
    product_single_pairs = [(x*y, z), (x*z, y), (y*z, x)]
    for prod, single in product_single_pairs:
        for perm in permutations([prod, single, 1, 1]):
            unique_arrays.add(perm)
    
    # 场景3:三者乘积 + 三个1的所有排列
    total_product = x * y * z
    for perm in permutations([total_product, 1, 1, 1]):
        unique_arrays.add(perm)
    
    # 转换为列表格式返回
    return [list(arr) for arr in unique_arrays]

内容的提问来源于stack exchange,提问作者ben-albrecht

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:35:21