Skip to content

Commit

Permalink
aoc 2016 refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
TheCK committed Nov 27, 2024
1 parent 128d833 commit 1863408
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 127 deletions.
8 changes: 4 additions & 4 deletions adventofcode/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,8 +344,8 @@
[20161802solution]: src/main/java/org/ck/adventofcode/year2016/Day18.java
[20161901solution]: src/main/java/org/ck/adventofcode/year2016/Day19.java
[20161902solution]: src/main/java/org/ck/adventofcode/year2016/Day19.java
[20162001solution]: src/main/java/org/ck/adventofcode/year2016/day20/Part1.java
[20162002solution]: src/main/java/org/ck/adventofcode/year2016/day20/Part2.java
[20162001solution]: src/main/java/org/ck/adventofcode/year2016/Day20.java
[20162002solution]: src/main/java/org/ck/adventofcode/year2016/Day20.java
[20162101solution]: src/main/java/org/ck/adventofcode/year2016/day21/Part1.java
[20162102solution]: src/main/java/org/ck/adventofcode/year2016/day21/Part2.java
[20162201solution]: src/main/java/org/ck/adventofcode/year2016/day22/Part1.java
Expand Down Expand Up @@ -394,8 +394,8 @@
[20161802tests]: src/test/java/org/ck/adventofcode/year2016/Day18Test.java
[20161901tests]: src/test/java/org/ck/adventofcode/year2016/Day19Test.java
[20161902tests]: src/test/java/org/ck/adventofcode/year2016/Day19Test.java
[20162001tests]: src/test/java/org/ck/adventofcode/year2016/day20/Part1Test.java
[20162002tests]: src/test/java/org/ck/adventofcode/year2016/day20/Part2Test.java
[20162001tests]: src/test/java/org/ck/adventofcode/year2016/Day20Test.java
[20162002tests]: src/test/java/org/ck/adventofcode/year2016/Day20Test.java
[20162101tests]: src/test/java/org/ck/adventofcode/year2016/day21/Part1Test.java
[20162102tests]: src/test/java/org/ck/adventofcode/year2016/day21/Part2Test.java
[20162201tests]: src/test/java/org/ck/adventofcode/year2016/day22/Part1Test.java
Expand Down
54 changes: 50 additions & 4 deletions adventofcode/src/main/java/org/ck/adventofcode/year2016/Day20.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,64 @@
package org.ck.adventofcode.year2016;

import java.util.Scanner;
import java.util.*;
import org.ck.adventofcode.util.AOCSolution;
import org.ck.codechallengelib.annotation.Solution;

@Solution(
id = 20162001,
name = "Day 20: Firewall Rules",
url = "https://adventofcode.com/2016/day/20",
category = "2016")
@Solution(
id = 20162002,
name = "Day 20: Firewall Rules - Part 2",
url = "https://adventofcode.com/2016/day/20",
category = "2016")
public class Day20 extends AOCSolution {
@Override
protected void runPartOne(final Scanner in) {
run(in);
run(in, true);
}

@Override
protected void runPartTwo(final Scanner in) {
run(in);
run(in, false);
}

private void run(final Scanner in) {}
private void run(final Scanner in, final boolean findFirstOnly) {
final List<Range> blocked = new ArrayList<>();

while (in.hasNextLine()) {
final String[] input = in.nextLine().split("-");

blocked.add(new Range(Long.parseLong(input[0]), Long.parseLong(input[1])));
}

long count = 0;
long ip = 0;

while (ip <= 4294967295L) {
final long currentIp = ip;

final Optional<Range> max =
blocked.stream()
.filter(block -> block.start() <= currentIp && currentIp <= block.end())
.max(Comparator.comparingLong(Range::end));

if (max.isPresent()) {
ip = max.get().end() + 1;
} else {
if (findFirstOnly) {
break;
}

++count;
++ip;
}
}

print(findFirstOnly ? ip : count);
}

private record Range(long start, long end) {}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
package org.ck.adventofcode.year2016;

import org.ck.adventofcode.util.BaseAOCTest;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

class Day20Test extends BaseAOCTest {
@ParameterizedTest
@ValueSource(strings = {"01"})
@Disabled
void testOne(String name) throws Exception {
runTest(new Day20()::partOne, "day20/%s".formatted(name));
}

@ParameterizedTest
@ValueSource(strings = {"02"})
@Disabled
void testTwo(String name) throws Exception {
runTest(new Day20()::partTwo, "day20/%s".formatted(name));
}
Expand Down

This file was deleted.

This file was deleted.

0 comments on commit 1863408

Please sign in to comment.