diff --git a/main.java.tmpl b/main.java.tmpl index 4b85250..f0a8f03 100644 --- a/main.java.tmpl +++ b/main.java.tmpl @@ -11,6 +11,8 @@ public class Day00 { private static void part1() { try (Scanner scanner = new Scanner(new FileReader("resources/inputs/00/input"))) { + StringBuilder sb = new StringBuilder(); + while (scanner.hasNextLine()) { sb.append(scanner.nextLine()); sb.append("\n"); @@ -24,6 +26,8 @@ public class Day00 { private static void part2() { try (Scanner scanner = new Scanner(new FileReader("resources/inputs/00/input"))) { + StringBuilder sb = new StringBuilder(); + while (scanner.hasNextLine()) { sb.append(scanner.nextLine()); sb.append("\n"); diff --git a/src/Day02.java b/src/Day02.java new file mode 100644 index 0000000..1172640 --- /dev/null +++ b/src/Day02.java @@ -0,0 +1,74 @@ +package src; + +import java.io.FileReader; +import java.util.Scanner; + +public class Day02 { + public static void main(String[] args) { + part1(); + // part2(); + } + + private static void part1() { + try (Scanner scanner = new Scanner(new FileReader("resources/inputs/02/input")).useDelimiter(",")) { + long sum = 0L; + while (scanner.hasNext()) { + String input = scanner.next().trim(); + String[] range = input.split("-"); + String start = range[0]; + long end = Long.parseLong(range[1]); + if (isInvalid(start)) { + sum += Long.parseLong(start); + } + start = permute(start); + while (Long.parseLong(start) <= end) { + sum += Long.parseLong(start); + start = permute(start); + } + } + System.out.println(sum); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + + private static void part2() { + try (Scanner scanner = new Scanner(new FileReader("resources/inputs/02/input"))) { + StringBuilder sb = new StringBuilder(); + + while (scanner.hasNextLine()) { + sb.append(scanner.nextLine()); + sb.append("\n"); + } + String input = sb.toString(); + System.out.println(input); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + + private static boolean isInvalid(String id) { + if (id.length() % 2 != 0) { + // odd length, can't have a repeated pair + return false; + } + return CharSequence.compare( + id.subSequence(0, id.length() / 2), + id.subSequence(id.length() / 2, id.length())) == 0; + } + + private static String permute(String str) { + if (str.length() % 2 != 0) { + // in this case, we need to get to a even-length string + return String.valueOf((int) Math.pow(10, str.length() / 2)) + + String.valueOf((int) Math.pow(10, str.length() / 2)); + } + long head = Long.parseLong(str.subSequence(0, str.length() / 2).toString()); + long tail = Long.parseLong(str.subSequence(str.length() / 2, str.length()).toString()); + if (tail < head) { + return String.valueOf(head) + String.valueOf(head); + } + head++; + return String.valueOf(head) + String.valueOf(head); + } +}