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

如何增量生成符合规则的命令字符串与数字交替组合序列

实现方案

核心逻辑拆解

所有合法字符串都由≥1个独立单元拼接而成,每个单元固定为「命令字符串 + 非空数字排列串」的结构,天然满足全部规则:

  • 单元本身以命令开头、数字结尾,多单元拼接后整体依然符合开头为命令、结尾为数字的要求
  • 命令后仅接数字,不存在连续命令的情况
  • 完全遵循「命令+数字序列」的交替规则

可运行代码实现

from itertools import permutations, product
from pprint import pprint

# 定义基础集合
NUMBERS = [0, 1, 2, 3, 4, 5, 6]
COMMANDS = ['open', 'start', 'finish', 'quit', 'destroy']
# 可自行调整最大拼接轮次,避免生成数量过多
MAX_ROUND = 3

def generate_num_strings():
    """生成所有合法的非空数字排列串"""
    # 数字串长度从1到7(NUMBERS总长度)
    for length in range(1, len(NUMBERS)+1):
        for perm in permutations(NUMBERS, length):
            # 排列转字符串,比如(1,2,3)转成"123"
            yield ''.join(map(str, perm))

def generate_units():
    """生成所有「命令+数字串」基础单元"""
    for cmd, num_str in product(COMMANDS, generate_num_strings()):
        yield f"{cmd}{num_str}"

def generate_all_combinations():
    """生成所有符合规则的完整组合"""
    # 轮次从1到MAX_ROUND
    for round_cnt in range(1, MAX_ROUND+1):
        # 每次取round_cnt个单元拼接
        for units in product(generate_units(), repeat=round_cnt):
            yield ''.join(units)

# 示例:输出前20个结果测试
if __name__ == '__main__':
    res = generate_all_combinations()
    pprint([next(res) for _ in range(20)])

参数调整说明

  • 如果需要限制数字串的最大长度,可以修改generate_num_strings函数里range(1, len(NUMBERS)+1)的上限
  • 如果需要生成更多轮次的长组合,修改MAX_ROUND即可,注意轮次越高生成的结果数量越大,避免设置过大导致内存占用过高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:57:00