1

私が達成しようとしているのは、このようなものです。1,000 個のボックスのリストと 25 色のリストがあるとします。色が指定されたリストからのものになるようにボックスに色を割り当てたいとします。色のボックスは同じ色が選択されます。同じ色を複数のボックスで使用できますが、同じボックスの色は、アルゴリズムを何度実行しても常に同じになります。

25 色のリストと、ボックスの名前または ID に基づいて一意の番号 (25 の範囲内) を作成するアルゴリズムを使用できると思います。

どのアルゴリズムが私のために働くべきか誰でも助けてくれますか?

更新 要件がわずかに変更されました。現在、その範囲から 5 つの固有の色が必要であり、色は常に同じでなければなりません。ボックスを 5 つのグループに配置するとします。各ボックスは 25 色の範囲内で一意の色を取得する必要があります。また、アルゴリズムは常に同じグループに同じ色を与える必要があります。

4

1 に答える 1

4
box.getId().hashCode() % 25

0 から 24 (両端を含む) までの数値を取得します。

ボックス間の色の分布に関するルールを指定していないため、次のアルゴリズムも要件を満たしていることに注意してください。

return 0;

適切な分布が必要な場合は、ボックスを反復処理しMap<String, Integer>、キーがボックス ID で値が色であるa を入力します。

Map<String, Integer> colorsByBoxId = new HashMap<String, Integer>();
int i = 0;
for (Box box : boxes) {
    int colorIndex = i % 25;
    i++;
    colorsByBoxId.put(box.getId(), colorIndex);
}

ボックスの色を取得するたびに、このマップを使用します。

colorまたは、単純に同じことを行い、Box クラスにフィールドを追加します。

于 2012-12-14T07:49:24.170 に答える