有趣的问题:根据通用属性将对象整理到垃圾箱中

时间:2018-11-12 21:04:19

标签: c# algorithm

假设我们有一组对象。这些对象中的每一个都有一个字母,一个数字和一个形状。该数据集可能看起来像这样:

DataSet

我想编写一种算法,将这些算法归类为“容器”。这样他们就可以显示出场景中涵盖了哪些可能性,还有哪些需要覆盖。到最后,您将拥有一组垃圾箱。这样您就可以访问已组织到其中的所有对象。

所以有组织的集合看起来像这样:

Bin 1: [ (A, B) , (0), (Circle, Square) ] *(grouping line 1, 2, 7, 8)*

Bin 2: [ (A) , (0), (Triangle) ]

Bin 3: [ (A), (1), (Circle, Square) ] *(grouping line 5, 6)*

Bin 4: [ (B), (1), (Circle) ] 

Needed: [ (B), (0), (Triangle) ]

Needed: [ (B), (1), (Square, Triangle) ]

有人知道如何解决这个问题吗?或者如何处理将一根线插入多个插槽的问题?

例如,此集合可以将第5行分组为

[ (A, B), (1), (Circle) ][(A), (1), (Circle, Square) ]都有效。

所以也许必须进行冗余检查?也许要检查一下对象是否已包含在Bin中?

任何帮助,想法或讨论将不胜感激。

1 个答案:

答案 0 :(得分:0)

根本不组织到垃圾箱中;让三元组展开。

首先,生成所有必需组合的参考列表:{A,B} x {0,1} x {圆形,正方形,三角形}。 现在,简单地计算参考列表和输入列表之间的设置差异。剩下的就是您尚未涵盖的一组组合。