Repository navigation
Expand file tree
/
Copy pathDay4.java
More file actions
81 lines (66 loc) · 2.11 KB
/
Copy pathDay4.java
File metadata and controls
81 lines (66 loc) · 2.11 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package adventForCode;
import java.io.FileNotFoundException;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.stream.IntStream;
class MainDay4 {
public static void main(String[] args) throws FileNotFoundException {
Day4 day4 = new Day4();
day4.calculate();
}
}
class Day4 {
public void calculate() throws FileNotFoundException {
try (Scanner textFile = new Scanner(Paths.get("C:\\day4.txt").toFile())) {
String line;
ArrayList<Cleaning> cleaning = new ArrayList<>();
int overlapCounter = 0;
while (textFile.hasNextLine()) {
line = textFile.nextLine();
String[] array = line.split(",");
cleaning.add(new Cleaning(array[0], array[1]));
}
for (Cleaning cleaningObj : cleaning) {
if (cleaningObj.overlap) {
overlapCounter++;
}
}
System.out.println(overlapCounter);
}
}
}
class Cleaning {
String firstRangeStr;
String secondRangeStr;
int[] firstRange;
int[] secondRange;
boolean overlap;
Cleaning(String firstRangeStr, String secondRangeStr) {
this.firstRangeStr = firstRangeStr;
this.secondRangeStr = secondRangeStr;
calculateRange();
calculateOverlap();
}
private void calculateRange() {
String[] arrayFirstRange = firstRangeStr.split("-");
String[] arraySecondRange = secondRangeStr.split("-");
this.firstRange = IntStream.rangeClosed(Integer.parseInt(arrayFirstRange[0]),
Integer.parseInt(arrayFirstRange[1])).toArray();
this.secondRange = IntStream.rangeClosed(Integer.parseInt(arraySecondRange[0]),
Integer.parseInt(arraySecondRange[1])).toArray();
}
private void calculateOverlap() {
int overlapCount = 0;
for (int firstRangeCount : firstRange) {
for (int secondRangeCount : secondRange) {
if (secondRangeCount == firstRangeCount) {
overlapCount++;
}
}
}
if (overlapCount == firstRange.length || overlapCount == secondRange.length) {
this.overlap = true;
}
}
}