58 lines
2.2 KiB
Java
58 lines
2.2 KiB
Java
import java.util.Arrays;
|
|
|
|
public class FourSquares {
|
|
public static void main(String[] args) {
|
|
fourSquare(1, 7, true, true);
|
|
fourSquare(3, 9, true, true);
|
|
fourSquare(0, 9, false, false);
|
|
}
|
|
|
|
private static void fourSquare(int low, int high, boolean unique, boolean print) {
|
|
int count = 0;
|
|
|
|
if (print) {
|
|
System.out.println("a b c d e f g");
|
|
}
|
|
for (int a = low; a <= high; ++a) {
|
|
for (int b = low; b <= high; ++b) {
|
|
if (notValid(unique, a, b)) continue;
|
|
|
|
int fp = a + b;
|
|
for (int c = low; c <= high; ++c) {
|
|
if (notValid(unique, c, a, b)) continue;
|
|
for (int d = low; d <= high; ++d) {
|
|
if (notValid(unique, d, a, b, c)) continue;
|
|
if (fp != b + c + d) continue;
|
|
|
|
for (int e = low; e <= high; ++e) {
|
|
if (notValid(unique, e, a, b, c, d)) continue;
|
|
for (int f = low; f <= high; ++f) {
|
|
if (notValid(unique, f, a, b, c, d, e)) continue;
|
|
if (fp != d + e + f) continue;
|
|
|
|
for (int g = low; g <= high; ++g) {
|
|
if (notValid(unique, g, a, b, c, d, e, f)) continue;
|
|
if (fp != f + g) continue;
|
|
|
|
++count;
|
|
if (print) {
|
|
System.out.printf("%d %d %d %d %d %d %d%n", a, b, c, d, e, f, g);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (unique) {
|
|
System.out.printf("There are %d unique solutions in [%d, %d]%n", count, low, high);
|
|
} else {
|
|
System.out.printf("There are %d non-unique solutions in [%d, %d]%n", count, low, high);
|
|
}
|
|
}
|
|
|
|
private static boolean notValid(boolean unique, int needle, int... haystack) {
|
|
return unique && Arrays.stream(haystack).anyMatch(p -> p == needle);
|
|
}
|
|
}
|