我想要生成一个具有不同节点类型的树。对于每个节点类型,有不同可能的节点类型组合,它们可以成为该节点的子节点。任何节点类型都可能没有子节点。
从本质上说,recursive-gen迫使我从叶生成器开始,生成没有子节点的任意类型的节点,从而从内到外构建树。从子生成器创建生成器的函数本质上必须生成所需的父节点类型,并在子生成器上使用such-that,直到生成所需的子节点类型为止。这通常会导致运行时错误,说明such-that在10次尝试后失败。
由于无法从父生成器中参数化子生成器,因此有哪些替代选项?
发布于 2015-12-30 17:02:35
与such-that类似的策略可能是生成一棵具有不受限制的子类的完整树,然后通过过滤出每个级别上不允许的孩子来对其进行后处理。
最明显的缺点是,大多数时候你可能会得到相当小的树,同时也会做很多丢弃的工作。
https://stackoverflow.com/questions/34533216
复制相似问题