Skip to content

Commit 056c781

Browse files
committed
Day 13 initial commit
1 parent 68c33be commit 056c781

File tree

4 files changed

+147
-67
lines changed

4 files changed

+147
-67
lines changed

input0.txt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
0 <-> 2
2-
1 <-> 1
3-
2 <-> 0, 3, 4
4-
3 <-> 2, 4
5-
4 <-> 2, 3, 6
6-
5 <-> 6
7-
6 <-> 4, 5
1+
0: 3
2+
1: 2
3+
4: 4
4+
6: 4

input13.txt

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
0: 3
2+
1: 2
3+
2: 4
4+
4: 4
5+
6: 5
6+
8: 6
7+
10: 8
8+
12: 8
9+
14: 6
10+
16: 6
11+
18: 9
12+
20: 8
13+
22: 6
14+
24: 10
15+
26: 12
16+
28: 8
17+
30: 8
18+
32: 14
19+
34: 12
20+
36: 8
21+
38: 12
22+
40: 12
23+
42: 12
24+
44: 12
25+
46: 12
26+
48: 14
27+
50: 12
28+
52: 12
29+
54: 10
30+
56: 14
31+
58: 12
32+
60: 14
33+
62: 14
34+
64: 14
35+
66: 14
36+
68: 14
37+
70: 14
38+
72: 14
39+
74: 20
40+
78: 14
41+
80: 14
42+
90: 17
43+
96: 18

src/day12/Main.java

Lines changed: 83 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,111 @@
11
package day12;
22

33
import java.util.ArrayList;
4-
import java.util.HashMap;
5-
import java.util.HashSet;
4+
import java.util.Arrays;
65

76
import util.ReadInputHelper;
87

98
public class Main {
109
public static void main(String[] args) {
11-
ArrayList<String> lines = new ReadInputHelper(12).getLines();
10+
ArrayList<String> lines = new ReadInputHelper(13).getLines();
1211

13-
HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();
12+
ArrayList<Wall> walls = new ArrayList<>();
1413

14+
int max = 0;
1515
for (int i = 0; i < lines.size(); i++) {
16-
String[] parts = lines.get(i).split(" <-> ");
17-
Integer id = Integer.parseInt(parts[0]);
18-
String[] fStrings = parts[1].split(", ");
19-
ArrayList<Integer> followers = new ArrayList<>();
16+
String[] line = lines.get(i).split(": ");
17+
int name = Integer.parseInt(line[0]);
18+
if (name > max)
19+
max = name;
20+
walls.add(new Wall(Integer.parseInt(line[0]), i, Integer.parseInt(line[1])));
21+
}
22+
23+
int sum = 0;
24+
loop: while (true) {
25+
for (int i = 0; true; i++) {
26+
int time = sum + i;
27+
int index = walls.indexOf(new Wall(i, 0, -1));
28+
29+
if (index == -1) {
30+
continue;
31+
}
2032

21-
for (int j = 0; j < fStrings.length; j++) {
22-
followers.add(Integer.parseInt(fStrings[j]));
33+
Wall wall = walls.get(index);
34+
35+
if (wall.getSpos(time) == 0) {
36+
sum++;
37+
break;
38+
}
39+
40+
if (wall.name >= max) {
41+
break loop;
42+
}
2343
}
24-
map.put(i, followers);
44+
2545
}
26-
int counter = 0;
27-
ArrayList<HashSet<Integer>> groups = new ArrayList<>();
46+
System.out.println(sum);
47+
}
48+
}
2849

29-
for (int j = 0; j < map.size(); j++) {
30-
ArrayList<Integer> stack = new ArrayList<>();
50+
class Wall {
51+
public int name, depth, size, spos = 0;
52+
boolean reachedTop = false;
53+
int[] sps;
54+
int ceil;
3155

32-
stack.add(j);
33-
HashSet<Integer> used = new HashSet<>();
34-
while (!stack.isEmpty()) {
56+
public Wall(int name, int depth, int size) {
57+
this.name = name;
58+
this.depth = depth;
59+
this.size = size;
3560

36-
ArrayList<Integer> fs = map.get(stack.remove(0));
61+
if (size != -1) {
62+
sps = new int[size + size - 2];
63+
initSPos();
64+
}
65+
}
3766

38-
if (fs.size() > 0 && fs != null)
39-
for (int i = 0; i < fs.size(); i++) {
40-
if (!used.contains(fs.get(i))) {
41-
stack.add(fs.get(i));
42-
}
67+
public void incScanner() {
68+
if (size - 1 == spos)
69+
reachedTop = true;
70+
if (spos == 0)
71+
reachedTop = false;
4372

44-
used.add(fs.get(i));
45-
}
73+
if (!reachedTop)
74+
spos++;
75+
else
76+
spos--;
4677

47-
// if (stack.contains(0)) {
48-
// counter++;
49-
// break;
50-
// }
51-
}
78+
}
5279

53-
groups.add(used);
80+
public boolean equals(Object o) {
81+
Wall other = (Wall) o;
82+
return name == other.name;
83+
}
84+
85+
public void reset() {
86+
spos = 0;
87+
}
88+
89+
public void initSPos() {
90+
int end1 = size-2;
91+
int counter = size-2;
92+
for (int i = 0; i < end1; i++){
93+
sps[i] = counter--;
5494
}
5595

56-
groups.forEach(e -> {
57-
System.out.println(e.toString());
58-
});
59-
60-
System.out.println();
61-
System.out.println();
62-
63-
ArrayList<HashSet<Integer>> rslt = new ArrayList<>();
64-
65-
for (int i = 0; i < groups.size(); i++) {
66-
HashSet<Integer> starter = groups.get(i);
67-
for (int j = 0; j < groups.size(); j++) {
68-
if (groups.get(j) != starter)
69-
if (groups.get(j).containsAll(starter))
70-
starter.clear();
71-
}
72-
}
73-
74-
for (int i = 0; i < groups.size(); i++) {
75-
if(groups.get(i).size() > 0){
76-
rslt.add(groups.get(i));
77-
}
96+
counter = 0;
97+
for(int i = end1; i < sps.length;i++){
98+
sps[i] = counter++;
7899
}
79100

80-
rslt.forEach(e -> {
81-
System.out.println(e.toString());
82-
});
101+
System.out.println(Arrays.toString(sps));
102+
}
83103

84-
System.out.println(counter);
85-
System.out.println(rslt.size());
104+
public int getSpos(int index) {
105+
if (size == 2)
106+
return index % 2;
107+
else
108+
return Math.abs(sps[(index + size-2) % sps.length]);
86109
}
87110

88-
}
111+
}

src/day13/Main.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package day13;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
6+
import util.ReadInputHelper;
7+
8+
public class Main {
9+
public static void main(String[] args) {
10+
ArrayList<String> lines = new ReadInputHelper(12).getLines();
11+
12+
HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();
13+
14+
for (int i = 0; i < lines.size(); i++) {
15+
}
16+
}
17+
}

0 commit comments

Comments
 (0)