python二元操作符怎么理解_什么python代码为二元运算符生成所有可能的分组(树)...

正如在几个SO问题中所解释的那样,并且在

mathworld处更抽象地解释,加泰罗尼亚数字的序列恰好对应于可以为任何给定数量的运算符生成的括号分组的数量.但我还没有找到生成所有这些分组的算法.

该二进制包围算法对应于Tamari Lattice,并且可以以多种不同方式描述.该算法最明显的实际用途是通过围绕二元运算符和它们运算的数字的每个可能的包围来生成所有可能的表达式.这可以用于穷举测试二叉树上的各种类型的操作.

网络搜索确实揭示了one implementation in C#,但我认为我需要一段时间来理解,因为我不知道C#语法.

那么,什么python代码生成围绕运算符的所有可能的括号分组(因此可以与实际表达式一起使用以生成所有可能性)?对于2,3和4,输出如下所示:

AllBinaryTrees(2)

>(x(xx))

>((xx)x​​)

AllBinaryTrees(3)

>(((xx)x​​)x)

>((x(xx))x)

>((xx)(xx))

>(x((xx)x​​))

>(x(x(xx)))

AllBinaryTrees(4)

>(x(x(x(xx))))

>(x(x((xx)x​​)))

>(x((xx)(xx)))

>(x((x(xx))x))

>(x(((xx)x​​)x))

>((xx)(x(xx)))

>((xx)((xx)x​​))

>((x(xx))(xx))

>(((xx)x​​)(xx))

>((x(x(xx)))x)

>((x((xx)x​​))x)

>(((xx)(xx))x)

>(((x(xx))x)x)

>((((xx)x​​)x)x)

更好的是代码可以执行以下操作:

AllBinaryTrees(“2 3/4”)

输出:

> 2(3/4)

>(2 3)/ 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值