首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元规划组合器

元规划组合器
EN

Stack Overflow用户
提问于 2018-12-04 18:43:22
回答 2查看 46关注 0票数 0

我感兴趣的是创建一个python函数,它接受2*n参数,其中n可以是变量。将前n个参数与第二个n个参数进行比较。

本质上,如果是n=2,例如,函数f(a1、a2、b1、b2)会检查它(a1==b1和a2==b2)或(a1==b2和a2==b1)。对于n=3,函数f(a1、a2、a3、b1、b2、b3)将检查这一点(a1==b1和a2==b2和a3==b3)或(a1==b2和a2==b3和a3==b1)或(a1==b3和a2==b1和a3==b1)。

但是,我希望函数根据n的值动态构造条件语句。

这可能是一个很高的要求,我可以做我自己的研究,但有没有人可以指出我的正确方向?这将被视为元编程,对吗?有人知道有一个图书馆存在于这类事情中吗?

谢谢,

-AA

EN

回答 2

Stack Overflow用户

发布于 2018-12-04 20:13:38

代码语言:javascript
复制
def f(*args):
    l = len(args)
    assert l % 2 == 0
    return args[:l / 2] == args[l / 2:] or args[:l / 2] == args[l:l / 2 - 1:-1]


assert f(True, True)
assert not f(True, False)
assert f(True, False, True, False)
assert f(True, False, False, True)
assert not f(True, False, True, True)
assert f(1, 1)
assert not f(1, 2)
assert f(1, 2, 1, 2)
assert f(1, 2, 2, 1)
assert not f(1, 2, 0, 1)
assert not f(1, 2, 1, 0)
assert f(1, 2, 3, 1, 2, 3)
assert f(1, 2, 3, 3, 2, 1)
assert not f(1, 2, 3, 1, 2, 0)
assert not f(1, 2, 3, 0, 2, 1)
票数 1
EN

Stack Overflow用户

发布于 2018-12-04 18:50:26

编辑:既然您现在指定了Python,那么考虑将这作为未来请求者的额外起点。

您可以从一些不同的模板开始您的研究:

代码语言:javascript
复制
template<typename... Args>
void foo(Args&&... args) {
  static_assert(sizeof...(args) % 2 == 0, "Need 2*n parameters for some n");
  // Condition using array + parameter pack expansion.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53619518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档