Итак, простое решение для первого дня 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);
}
Исходные данные: https://adventofcode.com/2022/day/1/input