Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.List;
- import java.util.regex.Pattern;
- import java.util.stream.Stream;
- /**
- * @author /u/Philboyd_Studge on 12/5/2015.
- */
- public class Advent6 {
- private static final String[] COMMANDS = {"toggle", "turn on", "turn off"};
- private static boolean part1 = false; // true for part 1
- public static int count(int[][] grid) {
- return Stream.of(grid)
- .flatMapToInt(Arrays::stream)
- .sum();
- }
- public static void process(String in, int[][] grid) {
- int cmd = 0;
- for (int i = 0; i < COMMANDS.length; i++) {
- if (in.startsWith(COMMANDS[i])) cmd = i;
- }
- // strip command from string
- in = in.substring(COMMANDS[cmd].length()+1);
- // split spaces and commas
- // and map integer location values to array
- int[] loc = Pattern.compile("[\\s,]+")
- .splitAsStream(in)
- .filter(x -> x.length() < 4)
- .mapToInt(Integer::parseInt)
- .toArray();
- for (int i = loc[0]; i <= loc[2]; i++) {
- for (int j = loc[1]; j <= loc[3]; j++) {
- switch (cmd) {
- case 0:
- if (part1) grid[i][j] ^= 1;
- else grid[i][j] += 2;
- break;
- case 1:
- if (part1) grid[i][j] = 1;
- else grid[i][j] += 1;
- break;
- case 2:
- if (part1) {
- grid[i][j] = 0;
- } else {
- grid[i][j] -= 1;
- if (grid[i][j] < 0) grid[i][j] = 0;
- }
- break;
- }
- }
- }
- }
- public static void main(String[] args) {
- List<String> list = FileIO.getFileAsList("advent6.txt");
- int grid[][] = new int[1000][1000];
- for (String each : list) {
- process(each, grid);
- }
- int answer = count(grid);
- System.out.println("Answer: " + answer);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment