Решение для шестого дня получилось коротким, простым, универсальным (применительно к загадке).
И, я уверен, — глубоко неоптимальным при этом :). Зато — алгоритмически это было, пожалуй, проще загадок всех предыдущих дней.
Но оно сработало, что полностью соответствует духу викторины. Для первой части загадки markerSize = 4
, для части два — markerSize = 14
.
Advent of Code 2022: Day 6 Solutionstatic void day6(String puzzleInputUri) throws IOException, InterruptedException { int markerSize = 14; Set<Byte> buffer = new HashSet<>(); byte[] message = client.send(request.uri((URI.create(puzzleInputUri))).build(), HttpResponse.BodyHandlers.ofByteArray()).body(); for (int i = 0; i < message.length - markerSize; i++) { for (int j = i; j < i + markerSize; j++) { buffer.add(message[j]); } if (buffer.size() == markerSize) { System.out.println(i + markerSize); break; } buffer.clear(); } }
Исходные данные: https://adventofcode.com/2022/day/6/input