package src; import java.io.FileReader; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Day03 { public static void main(String[] args) { part1(); part2(); } private static void part1() { try (Scanner scanner = new Scanner(new FileReader("resources/inputs/03/input"))) { int sum = 0; while (scanner.hasNextLine()) { String raw = scanner.nextLine(); List bank = List.of(raw.split("")); int a = 0; int b = 1; int curr = Integer.parseInt(bank.get(a) + bank.get(b)); for (int i = 2; i < bank.size(); i++) { int candidateA = Integer.parseInt(bank.get(a) + bank.get(i)); int candidateB = Integer.parseInt(bank.get(b) + bank.get(i)); if (candidateA > curr) { curr = candidateA; b = i; } if (candidateB > curr) { curr = candidateB; a = b; b = i; } } sum += curr; } IO.println(sum); } catch (Exception e) { IO.println(e.getMessage()); } } private static void part2() { try (Scanner scanner = new Scanner(new FileReader("resources/inputs/03/testinput"))) { long sum = 0L; while (scanner.hasNextLine()) { String raw = scanner.nextLine(); List bank = List.of(raw.split("")); // first, get the initial 12 batteries List curr = new ArrayList<>(); curr.addAll(bank.subList(0, 12)); for (int i = 12; i < bank.size(); i++) { curr.add(bank.get(i)); // add the next battery to the end of the list for (int j = 1; j < 10; j++) { // does the list contain a battery of the specified value? int index = curr.indexOf(String.valueOf(j)); if (index != -1) { curr.remove(index); // remove it if it does break; } } } String result = curr.stream().reduce("", String::concat); IO.println(raw + " " + result); sum += Long.parseLong(result); } IO.println(sum); } catch (Exception e) { IO.println(e.getMessage()); } } }