Skip to content

Instantly share code, notes, and snippets.

@desrtfx
Created December 5, 2017 05:54
Show Gist options
  • Save desrtfx/4e3b6319468fd98461b87d2b21bf30b9 to your computer and use it in GitHub Desktop.
Save desrtfx/4e3b6319468fd98461b87d2b21bf30b9 to your computer and use it in GitHub Desktop.
Advent Of Code 2017 - Day 05
package day05;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import util.FileIO;
public class Day05 {
private static final String FILENAME = "./resources/Input_Day05.txt";
private static List<String> rawData = new ArrayList<>();
private static int[] data;
static {
rawData = FileIO.getFileAsList(FILENAME);
data = new int[rawData.size()];
for(int i=0; i < rawData.size();i++) {
data[i] = Integer.parseInt(rawData.get(i));
}
}
static int part1(int[] input) {
int ip = 0; // Instruction Pointer
int steps = 0; // Step counter
int[] tmpData = Arrays.copyOf(input, input.length); // do not alter the original array
do {
int tmpIp = ip + tmpData[ip];
tmpData[ip]++;
ip = tmpIp;
steps++;
} while ((ip < tmpData.length) && (ip >= 0));
return steps;
}
static int part2(int[] input) {
int ip = 0; // Instruction Pointer
int steps = 0; // Step counter
int[] tmpData = Arrays.copyOf(input, input.length); // do not alter the original array
do {
int tmpIp = ip + tmpData[ip];
if (tmpData[ip] >= 3) {
tmpData[ip]--;
} else {
tmpData[ip]++;
}
ip = tmpIp;
steps++;
} while ((ip < tmpData.length) && (ip >= 0));
return steps;
}
public static void main(String[] args) {
int[] sample = new int[] {0, 3, 0, 1, -3};
System.out.printf("Part1: Steps in sample: %d%n", part1(sample));
System.out.printf("Part1: Steps in input data: %d%n", part1(data));
System.out.printf("Part2: Steps in sample: %d%n", part2(sample));
System.out.printf("Part2: Steps in input data: %d%n", part2(data));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment