Решение для шестого дня получилось коротким, простым, универсальным (применительно к загадке).
И, я уверен, — глубоко неоптимальным при этом :). Зато — алгоритмически это было, пожалуй, проще загадок всех предыдущих дней.
Но оно сработало, что полностью соответствует духу викторины. Для первой части загадки markerSize = 4
, для части два — markerSize = 14
.
static 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