2016-12-21 6 views
-4

私は1000を超えるエントリのリスト(csv)を持っています。リストを特定の基準でグループに分ける

First Name Surname Gender City Birthdate Age Index 
---------- ------- ------ ------ ---------- --- ----- 
Sam   Smith f  Munich 06.04.1999 17 1 

すべてのエントリが1人を表します。 それはこのようになります。 私はそれらをpowershellでグループに分けたいと思っています。

グループごとに満たされなければならないいくつかの条件があります。

  • は、各グループは、同じ都市
  • から2〜3名様がなければならないすべてのグループで
  • 最大7人で構成する必要があります
  • 彼らは18の上方性別
  • で区切られるべき18歳未満の混合グループ

Iドンがあるかもしれませんその背後にあるロジックではなく、パワーシェルコードの助けが必要です。 これまでに、年齢別、都市別、性別別にソートを試みました。しかし、私はそれを適切な基準でグループ化する方法はまだ分かりません。

+0

私にとっては、パーティション化などでTSQLウィンドウ関数によく似ています。 Powershellを使用すると、要件に合わせてこの手順を段階的に実行できます。どちらの方法でも、複雑なグルーピングを実行する簡単な方法はないと思います。 –

+0

あなた自身の宿題をしてください! – FoxDeploy

答えて

0

これが最善の方法であるかどうかは分かりませんが、のバックトラッキングを使用して解決します。

https://en.wikipedia.org/wiki/Backtracking

それは説明するのは簡単です。 インテリジェンスを備えたブルートフォースアルゴリズムのようなものです。

基本的にはそれがどのように動作するか:

1)(condtionに該当する場合))
1.2以下に見える状態をチェックし、グループA
1.1)で一人を取る=>グループAに次の人を取りますか、グループAがいっぱいになるとグループBに入る。
1.1.2)条件を確認する
...など
1.3)条件が偽である場合=>一歩前に戻って別の人を連れて行く。他の人がいない場合は、別の人を連れて行くことができるようになるまで、もう一度歩いてください。
(アルゴリズムは、彼はさらにそれに見えないように、このパスは解決にはつながらないだろうことを知っているので、これは、単純なブルートフォースその後、別のあるものである。

に忘れてはいけません一つのグループが一杯になったときに、新しいグループを形成

条件:
18歳以下同じ都市から
2〜3名様のみ、男性/女性
あなただけの目をチェックする必要があなたがそれらを変更していないので、前のすべてのグループは大丈夫です。

とすぐにすべての人がグループ内にあるようエンド
と、すべての条件は、あなたがフィニッシュしている真です。
とき、またはあなたも=>ではない解決可能

ソリューションが終了した溶液に各組み合わせが、何もリードを試してみました:解決策は、それが1つを見つける存在する場合

関連する問題