A DisjointSet is a kind of Object.
A DisjointSet is a part of every DisjointSet.
尝试在 Inform 7 中启动一个 DisjointSet 对象,但即使我知道它可能会导致无限循环,我还是想这样做,因为它是算法的一部分。
这是错误
你写了"一个不相交集是每个不相交集的一部分":但是这个 泛化太危险了,因为它会导致 装配过程中的无限回归。有时,如果 您已经使用诸如"容器在每个 容器。
我想在 Inform 6 中做这样的事情会更容易,但我对此一无所知,所以我试图避免它。但也会接受通知 6 中的帮助。
编辑以下@jeroen建议:
也许我做错了,但也许一些示例代码可能会有所帮助。
A DisjointSet is a kind of Container.
A DisjointSet always contains a DisjointSet called the Parent.
The First Decl is a DisjointSet.
The Second Decl is a DisjointSet.
The Parent of the First Decl is the Second Decl. [This line doesn't work.]
句子"第一个十进制的父母是第二个十个
" 似乎说两件事是相同的 - 我正在阅读"父母 First Decl"和"Second Decl"是两个不同的东西,因此 说一个是另一个是没有意义的:就像 说"圣彼得是圣保罗"。如果第二个就没关系了 事物是一种名称,也许具有属性:例如 "珍珠门是一个有灯光的房间"说,一个叫做珍珠的东西 盖茨存在,它是一个"房间",这是我所知道的一种, 结合一个叫做"点亮"的属性,我也知道。
我会给出两个答案。首先,你问的问题:
通知 7 中的链表
问题是包含并且是指示物理概念的一部分。当你使用这些词时,Inform认为你在谈论虚构宇宙中的物质,就好像你说,"每个桶都包含一个桶"。
相反,定义您自己的属性,该属性与Inform的物理世界模型无关:
每个 DisjointSet 都有一个称为 Parent 的 DisjointSet。
通过此更改,您的代码将正常工作。
现在回到你没有问的问题:
群体关系
如果你想要的是一堆对象集,其中这些对象集都是不相交的,请使用等价关系:
友谊将人们在群体中相互联系起来。
这定义了一种称为"友谊"的关系,它将所有动物划分为不相交的集合,这样动物与该集合中的其他动物是朋友,而不是与任何其他动物的朋友。
然后你必须教Know一些词汇:
动词成为朋友意味着友谊关系。
之后,短语"X 是 Y 的朋友"意味着 X 和 Y 在同一个友谊集中。你可以说"现在獾和巨型乌贼是朋友"这样的话来更新集合。
请参阅手册中的"群体关系"。