101 lines
3.0 KiB
Java
101 lines
3.0 KiB
Java
import java.util.Scanner;
|
|
|
|
import java.io.File;
|
|
import java.io.FileNotFoundException;
|
|
import java.util.ArrayList;
|
|
|
|
class day9 {
|
|
|
|
public static void main(String[] args) {
|
|
|
|
File myFile = new File("input.txt");
|
|
try {
|
|
|
|
Scanner in = new Scanner(myFile);
|
|
ArrayList<Long> nums = new ArrayList<>();
|
|
|
|
while (in.hasNext()) {
|
|
nums.add(Long.parseLong(in.nextLine()));
|
|
}
|
|
|
|
//final int preamble = 25;
|
|
//int lower = 0;
|
|
|
|
long target = 1309761972;
|
|
|
|
for (int i = 0; i < nums.size() - 1; i++) {
|
|
|
|
boolean over = false;
|
|
long sum = 0;
|
|
|
|
|
|
ArrayList<Long> currentSet = new ArrayList<>();
|
|
|
|
for (int j = i; j < nums.size() && over == false; j++) {
|
|
|
|
sum += nums.get(j);
|
|
currentSet.add(nums.get(j));
|
|
|
|
if (sum == target) {
|
|
|
|
long highest = 0;
|
|
long lowest = Long.MAX_VALUE;
|
|
|
|
for (int k = 0; k < currentSet.size(); k++) {
|
|
long current = currentSet.get(k);
|
|
if (current < lowest) lowest = current;
|
|
if (current > highest) highest = current;
|
|
}
|
|
|
|
over = true;
|
|
|
|
System.out.println("Lowest: " + lowest);
|
|
System.out.println("highest: " + highest);
|
|
|
|
System.out.println(highest + lowest);
|
|
break;
|
|
|
|
} else if (sum > target) {
|
|
over = true;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//Part 1, very inefficient code, had no time to do this one today
|
|
//Made easier using a stack and an array to which the combination of numbers in the stack would add up to
|
|
//Pop and remove from the stack and remove the last 25 items from array/list
|
|
//And that would be the most efficient with an efficiency of O(n^2)? instead of O(n^3) - I think, not sure
|
|
/*for (int currentNum = preamble; currentNum < nums.size(); currentNum++) {
|
|
|
|
boolean adds = false;
|
|
|
|
for (int i = currentNum - preamble; i < currentNum - 1; i++) {
|
|
for (int j = i + 1; j < currentNum; j++) {
|
|
|
|
System.out.printf("Adding %d and %d, Current Num: %d \n", nums.get(i), nums.get(j), nums.get(currentNum));
|
|
|
|
if (nums.get(i) + nums.get(j) == nums.get(currentNum)) {
|
|
adds = true;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
System.out.println(adds);
|
|
|
|
if (!adds) {
|
|
System.out.println(nums.get(currentNum));
|
|
break;
|
|
}
|
|
|
|
}*/
|
|
|
|
} catch (FileNotFoundException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
}
|
|
|
|
} |