すべての
コードを広めることには意味がありません。主なことを説明しようと思います。
3つの数字のすべての組み合わせのリスト-1000個。 見つかったチケットが追加されるセット。
List<Combination> combinations = new ArrayList<>(1000); Set<String> tickets = new HashSet<>();
ある組み合わせの値のセットからの各番号について、別の組み合わせの値のセットにそのような番号があるかどうかを確認します。
共通の値が見つかるまで、セットにチケットを意味する行を追加します。
値が見つかったらすぐに、セットからチケットを削除し、次の比較に進みます。
for (Combination comb1 : combinations) { for (Combination comb2 : combinations) { for (Integer x : comb1.getValues()) { if (comb2.getValues().contains(x)) { tickets.remove(comb1.toString() + comb2.toString()); break; } else { tickets.add(comb1.toString() + comb2.toString()); } } } }
各組み合わせの値のセットを計算する方法を示します。
(メソッドは、組み合わせの3桁の順列ごとに実行されます)
private void countValues(int a, int b, int c) {
合計: 23088チケット。
ラッキーチケット: 18個ごと
不運なチケット: 43ごと