advent-of-code/2018/Java/day01/Frequency.java

78 lines
1.6 KiB
Java
Raw Normal View History

2019-12-07 02:37:22 +01:00
package day01;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.HashSet;
import java.util.Scanner;
public class Frequency {
private HashSet<Integer> pastValues = new HashSet<Integer>();
private int frequency = 0;
private boolean repeated;
public void setRepeated() {
this.repeated = true;
}
public boolean getRepeated() {
return this.repeated;
}
public void plusFrequency(int plus) {
this.frequency += plus;
}
public void minusFrequency(int minus) {
this.frequency -= minus;
}
public int getFrequency() {
return this.frequency;
}
public boolean compareHashSet(int number) {
return !pastValues.add(number);
}
public void parseFile(File file) {
try {
Scanner scanner = new Scanner(new BufferedReader(new FileReader(file)));
while(scanner.hasNext()) {
String s = scanner.next();
if (s.matches("(\\-)(\\d)+")) {
this.minusFrequency(Integer.parseInt(s.substring(1)));
} else {
this.plusFrequency(Integer.parseInt(s.substring(1)));
}
if (compareHashSet(this.getFrequency())) {
System.out.println("repeat: " + this.getFrequency());
this.setRepeated();
break;
}
}
scanner.close();
}
catch (Exception e) {
System.out.println(e.toString() + " : " + e.getStackTrace().toString());
}
}
public static void main(String[] args) {
File input = new File("src/day01/input.txt");
Frequency f = new Frequency();
while ( !f.getRepeated() ) {
f.parseFile(input);
System.out.println(f.getFrequency());
}
}
}