Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(String[] args) throws Exception {
- combinations(3, 4, 2).forEach(System.out::println);
- }
- public static List<DiscreteLocation> combinations(int... limits) {
- List<DiscreteLocation> result = new ArrayList<>();
- combinations(limits, new int[limits.length], 0, result);
- return result;
- }
- private static void combinations(int[] limits, int[] values, int currentDimension, List<DiscreteLocation> results) {
- boolean lastDimension = currentDimension == limits.length - 1;
- for (int i = 0; i < limits[currentDimension]; i++) {
- values[currentDimension] = i;
- if (lastDimension) {
- results.add(new DiscreteLocation(values));
- } else {
- combinations(limits, values, currentDimension + 1, results);
- }
- }
- }
- record DiscreteLocation(List<Integer> coordinates) {
- DiscreteLocation(int... coordinates) {
- this(IntStream.of(coordinates).boxed().toList());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement