Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Advent2018;
- import com.sun.activation.registries.MailcapParseException;
- import util.AdventOfCode;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- public class Day12 extends AdventOfCode {
- Set<String> grow;
- int zero;
- String inp;
- public Day12(List<String> input) {
- super(input);
- }
- @Override
- public Integer part1() {
- for (int i = 0; i < 20; i++) {
- String last = "....." + inp + "...";
- String next = "";
- zero += 3;
- for (int j = 2; j < last.length() - 2; j++) {
- if (grow.contains(last.substring(j - 2, j + 3))) {
- next += "#";
- } else {
- next += ".";
- }
- }
- inp = next;
- }
- int sum = 0;
- for (int i = 0; i < inp.length(); i++) {
- sum += inp.charAt(i) == '#' ? i - zero : 0;
- }
- return sum;
- }
- @Override
- public Object part2() {
- long sum = 0L;
- // 100 iterations
- for (int i = 0; i < 4; i++) {
- sum = part1();
- }
- // get factor
- int last = 0;
- int diff = 0;
- for (int i = 0; i < 3; i++) {
- int next = part1();
- diff = next - last;
- last = next;
- }
- sum += ((50_000_000_000L - 100) / 20)* diff;
- return sum;
- }
- @Override
- public void parse() {
- grow = new HashSet<>();
- inp = input.get(0).substring(15);
- for (int i = 2; i < input.size(); i++) {
- String[] split = input.get(i).split(" ");
- if (split[2].startsWith("#")) {
- grow.add(split[0]);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement