我有一个超过一千个条目的列表(csv)。 它看起来像这样:
First Name Surname Gender City Birthdate Age Index
---------- ------- ------ ------ ---------- --- -----
Sam Smith f Munich 06.04.1999 17 1
每个条目代表一个人。 我想用powershell将它们分成几组。
每个小组都必须满足几个标准:
我不需要PowerShell代码的帮助,而不是它背后的逻辑。 到目前为止,我尝试按年龄排序,然后按城市和性别排序。但我仍然不知道如何用正确的标准对其进行分组。
答案 0 :(得分:0)
我不确定这是否是执行此操作的最佳方法,但我会使用回溯来解决此问题。
https://en.wikipedia.org/wiki/Backtracking
很容易解释。 这就像是一个具有智能的强力算法。
基本工作原理:
1)A组中的一个人
1.1)检查条件(见下文)
1.2)如果条件为真=>将下一个人带到A组或A组满员时将其带入B组。
1.1.2)检查条件
......等等
1.3)如果条件为假=>退后一步,带走另一个人。如果没有其他人,那么就往后退一步,直到你可以带走另一个人。
(这与简单的蛮力不同,因为算法知道这条路径不会导致解决方案,因此他不会进一步查看。
当一个群组已满时,不要忘记组建新群组。
<强>条件:
强>
来自同一城市的2至3人
18岁以下只有男性/女性
你只需要检查实际的组,因为之前的所有组都没问题,因为你没有修改它们。
<强>结束强>
一旦每个人都在一个团体中并且所有条件都是真实的,那么你就完成了
或者当您尝试每种组合但没有任何结果导致解决方案时,您也完成了=&gt;不可能解决方案
<强>解决方案:
强>
当存在解决方案时,它将找到一个解决方案。