-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathDay1.java
81 lines (70 loc) · 1.94 KB
/
Day1.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package aoc18;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class Day1 {
// part2
public static long firstRepeatingFrequency(List<String> frequencyShifts) {
Set<Long> uniqueFrequencies = new HashSet<Long>();
long currentFrequency = 0;
uniqueFrequencies.add(currentFrequency);
while (true) {
for (String st : frequencyShifts) {
char currentOp = st.charAt(0);
int num = Integer.parseInt(st.substring(1));
switch (currentOp) {
case '+':
currentFrequency += num;
break;
case '-':
currentFrequency -= num;
break;
default:
System.err.println("unknown operator encountered at " + st);
}
if (uniqueFrequencies.contains(currentFrequency))
return currentFrequency;
else
uniqueFrequencies.add(currentFrequency);
}
}
}
// part 1
public static long resultingFrequency(List<String> frequencyShifts) {
long result = 0;
for (String st : frequencyShifts) {
char currentOp = st.charAt(0);
int num = Integer.parseInt(st.substring(1));
switch (currentOp) {
case '+':
result += num;
break;
case '-':
result -= num;
break;
default:
System.err.println("unknown operator encountered for String " + st);
}
}
return result;
}
public static List<String> inputFileToList(File inputFile) throws IOException {
Scanner sc = new Scanner(inputFile);
List<String> commandList = new ArrayList<String>();
while (sc.hasNextLine()) {
commandList.add(sc.nextLine());
}
sc.close();
return commandList;
}
public static void main(String[] args) throws IOException {
File input = new File("C:\\Users\\Timucin\\Desktop\\Advent of code 2018\\Day 1\\InputFile.txt");
List<String> frequencyShifts = inputFileToList(input);
long result = firstRepeatingFrequency(frequencyShifts);
System.out.println(result);
}
}