Advent of Code 2022: Day 1

Итак, простое решение для первого дня Advent of Code 2022 года. Запускается из консоли jshell.

Т.к. лень было что-то специальное изобретать для работы с данными задачи (да и формат AoC этого не предполагает) — сразу решил сложить всё в сортированную коллекцию.

Это пригодилось для второй части задачи — оказалось достаточным просто просуммировать три наибольшие цифры на калькуляторе — и ответ готов!

static void day1(String problemUri) throws IOException, InterruptedException { List<List<String>> initial = new ArrayList<>(); initial.add(new ArrayList<>()); var result = client.send(request.uri((URI.create(problemUri))).build(), HttpResponse.BodyHandlers.ofLines()).body() .reduce(initial, (sublist, element) -> { if (element.isBlank()) { sublist.add(new ArrayList<>()); } else { sublist.get(sublist.size() - 1).add(element); } return sublist; }, (list1, list2) -> emptyList()); TreeSet<Integer> calories = new TreeSet<>(); for (var stringList : result) { calories.add(stringList.stream() .mapToInt(Integer::parseInt) .sum() ); } System.out.println(calories); }
11
Начать дискуссию