From 69ba3abc1f60b8756f68fac570ecda31a2086325 Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Wed, 6 Dec 2023 12:28:22 +0000 Subject: Day 06 --- day06/day06.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ day06/input | 2 ++ day06/test | 2 ++ 3 files changed, 63 insertions(+) create mode 100644 day06/day06.java create mode 100644 day06/input create mode 100644 day06/test diff --git a/day06/day06.java b/day06/day06.java new file mode 100644 index 0000000..4965501 --- /dev/null +++ b/day06/day06.java @@ -0,0 +1,59 @@ +import java.io.IOException; +import java.io.RandomAccessFile; +import java.util.ArrayList; +import java.util.regex.Pattern; +import java.util.regex.Matcher; + +public class day06 { + public static void main(String args[]) throws IOException { + RandomAccessFile input = new RandomAccessFile("input", "r"); + System.out.println("Day 06 Part 1: " + part1(input)); + input.seek(0); + System.out.println("Day 06 Part 2: " + part2(input)); + input.close(); + } + + public static String part1(RandomAccessFile input) throws IOException { + ArrayList races = new ArrayList<>(); + Pattern digits = Pattern.compile("\\d+"); + Matcher times = digits.matcher(input.readLine()); + Matcher distances = digits.matcher(input.readLine()); + + while (times.find()) { + distances.find(); + races.add(new Integer[]{ + Integer.parseInt(times.group()), + Integer.parseInt(distances.group()) + }); + } + + int margin = 1; + for (Integer[] race: races) { + int wins = 0; + for (int hold = 1; hold < race[0]; hold++) { + int dist = (race[0] - hold) * hold; + if (dist > race[1]) { + wins += 1; + } + } + margin *= wins; + } + + return Integer.toString(margin); + } + + public static String part2(RandomAccessFile input) throws IOException { + long time = Long.parseLong(input.readLine().replaceAll(" ", "").substring(5)); + long distance = Long.parseLong(input.readLine().replaceAll(" ", "").substring(9)); + + int wins = 0; + for (long hold = 1; hold < time; hold++) { + long dist = (time - hold) * hold; + if (dist > distance) { + wins += 1; + } + } + + return Integer.toString(wins); + } +} diff --git a/day06/input b/day06/input new file mode 100644 index 0000000..7c06e07 --- /dev/null +++ b/day06/input @@ -0,0 +1,2 @@ +Time: 59 68 82 74 +Distance: 543 1020 1664 1022 diff --git a/day06/test b/day06/test new file mode 100644 index 0000000..28f5ae9 --- /dev/null +++ b/day06/test @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200 -- cgit v1.2.1