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()); } } } }
private void countValues(int a, int b, int c) { //Sum addValue(a + b + c); addValue(a + b - c); addValue(a + b * c); addValue((a + b) * c); if (c != 0 && b % c == 0) {addValue(a + b / c);} if (c != 0 && (a + b) % c == 0) { addValue((a + b) / c); } //Subtraction addValue(a - b + c); addValue(a - b - c); addValue(a - b * c); addValue((a - b) * c); if (c != 0 && b % c == 0) {addValue(a - b / c);} if (c != 0 && (a - b) % c == 0) {addValue((a - b) / c);} //Multiplication addValue(a * b + c); addValue(a * b - c); addValue(a * (b - c)); addValue(a * b * c); if (c != 0) { double x = (double)a * (double)b / (double)c; if (isInteger(x)) { addValue((int)x); } } if (c != 0) { double x = (double)a * (double)b / (double)c; if (isInteger(x)) { addValue((int)x); } } //Division if (b != 0 && a % b == 0) { addValue(a / b + c); } if (b + c != 0 && a % (b + c) == 0) { addValue(a / (b + c)); } if (b != 0 && a % b == 0) { addValue(a / b - c); } if (b - c != 0 && a % (b - c) == 0) { addValue(a / (b - c)); } if (b != 0) { double x = (double)a / (double)b * (double)c; if (isInteger(x)) { addValue((int)x); } } if (b != 0 && c != 0) { double x = (double)a / (double)b / (double)c; if (isInteger(x)) { addValue((int)x); } } }
Source: https://habr.com/ru/post/312920/
All Articles