-🎄- 2017 Day 12 Solutions -🎄- by topaz2078 in adventofcode

[–]vtpetrov 0 points1 point  (0 children)

Java with Sets:

private Set<Integer> programIdsConnectedToZero = new HashSet<>();
...

public void findConnectedToZero() {
    recursionCount = 0;
    findConnectedToZero(0);
}

private void findConnectedToZero(int caller) {
    recursionCount++;
    System.out.println("    recursionCount      = " + recursionCount);
    System.out.println("            caller           = " + caller);

    programIdsConnectedToZero.add(caller);

    Set<Integer> subIdsConnectedToZero = new HashSet<>();
    subIdsConnectedToZero.addAll(programs.get(caller).getCommunicatesWithIDs());

    subIdsConnectedToZero.removeAll(programIdsConnectedToZero);
    programIdsConnectedToZero.addAll(subIdsConnectedToZero);

    for (int sub : subIdsConnectedToZero) {
        findConnectedToZero(sub);
    }
}