Advent of Code 2023: Day 1: Trebuchet?! Снова AoC — и снова начат с опозданием. Дуплет! Основная идея прежняя – решать в jshell, пока это не станет слишком многословным. Экономия на буковках, в общем. Обвязка для загрузки условий задачи – та же, что для AoC-2022. Тег #adventofcode_2023, или страница на сайте. Для первой части загадки получилось достаточно простое и короткое решение, но для второй оно практически никак не подошло. Часть вторая и универсальное решение Совсем бесполезным решение для первой части назвать нельзя – легло в основу универсального. static void day1(String puzzleInputUri) throws IOException, InterruptedException { Map<String, String> digits = Map.of( "1", "one", "2", "two", "3", "three", "4", "four", "5", "five", "6", "six", "7", "seven", "8", "eight", "9", "nine" ); TreeMap<Integer, String> firstLast = new TreeMap<>(); var result = client.send(request.uri((URI.create(puzzleInputUri))).build(), HttpResponse.BodyHandlers.ofLines()).body() .map(string -> { firstLast.clear(); digits.forEach((digit, numeric) -> { firstLast.put(string.indexOf(digit), digit); firstLast.put(string.lastIndexOf(digit), digit); firstLast.put(string.indexOf(numeric), digit); firstLast.put(string.lastIndexOf(numeric), digit); } ); firstLast.remove(-1); // not matched substrings index return firstLast.firstEntry().getValue() + firstLast.lastEntry().getValue(); }) .mapToInt(Integer::parseInt) .sum(); System.out.println(result); } Жаль, что — для экономии буковок — не удалось отыскать где-нибудь в недрах стандартной библиотеки (Locale etc) готовых привязок цифр к числительным. Хотя и ожидаемо. Загадка первого дня была не слишком сложной, но поначалу пошла туговато на фоне повседневного “перекладывания жысонов“. Тем полезней переключаться! Участвуй! #adventofcode #adventofcode_2023 @panykey | Искусство реализации идей
1 год назад