-
Notifications
You must be signed in to change notification settings - Fork 0
/
Day05.java
67 lines (62 loc) · 2.48 KB
/
Day05.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Stack;
public class Day05 {
public static void main(String[] main) throws Exception {
try (var br = new BufferedReader(new FileReader("inputs/day05.txt"))) {
String line;
var chart = new ArrayList<String>();
int nCols = 0;
while (!(line = br.readLine()).isEmpty()) {
if (line.charAt(1) == '1') {
line = line.trim();
nCols = Integer.parseInt(line.substring(line.length() - 1));
} else {
chart.add(line.replaceAll("\\s+$", ""));
}
}
var part1 = new ArrayList<Stack<Character>>(nCols);
var part2 = new ArrayList<Stack<Character>>(nCols);
for (int i = 0; i < nCols; ++i) {
part1.add(new Stack<>());
part2.add(new Stack<>());
}
Collections.reverse(chart);
for (String chartLine : chart) {
int nLineCols = (chartLine.length() + 1) / 4;
for (int i = 0; i < nLineCols; ++i) {
char crate = chartLine.charAt((i * 4) + 1);
if (crate != ' ') {
part1.get(i).add(crate);
part2.get(i).add(crate);
}
}
}
while ((line = br.readLine()) != null) {
String[] tokens = line.split(" ");
var n = Integer.parseInt(tokens[1]);
var source1 = part1.get(Integer.parseInt(tokens[3]) - 1);
var target1 = part1.get(Integer.parseInt(tokens[5]) - 1);
var source2 = part2.get(Integer.parseInt(tokens[3]) - 1);
var target2 = part2.get(Integer.parseInt(tokens[5]) - 1);
for (int i = 0; i < n; ++i) {
target2.add(source2.get(source2.size() - n + i));
}
for (int i = 0; i < n; ++i) {
target1.add(source1.pop());
source2.pop();
}
}
for (var stack : part1) {
System.out.print(stack.get(stack.size() - 1));
}
System.out.println();
for (var stack : part2) {
System.out.print(stack.get(stack.size() - 1));
}
System.out.println();
}
}
}