Advent of Code 2022

Собрался в этом году поиграть-таки в Advent of Code (сомневаюсь, конечно, что до католического Рождества уложусь, но до НГ — шансы есть).

Чем он интересен — так это подходом. Собственно, сам код там и не нужен, требуется только ответ. Никому не важно, насколько эффективным, красивым и т. д. было решение, позволившее этот ответ получить.

Хоть на бумажке делай, хоть в электронных таблицах, хоть прямо в консоли браузера. Есть только задачка и окошко для ввода ответа.

Я решил делать в консоли jshell преимущественно. До тех пор, пока это получается удобно и быстро.

Вот минимальная обвязка, чтобы выкачивать условия задачи с сайта и отправлять на обработку. Работает из jshell, секрет для куков — залогиниться в AoC и скопировать из консоли браузера.

HttpCookie cookie = new HttpCookie("session", "secret"); cookie.setSecure(true); cookie.setHttpOnly(true); cookie.setDomain(".adventofcode.com"); cookie.setPath("/"); cookie.setVersion(0); cookie.setMaxAge(Instant.parse("2032-12-01T10:45:41Z").getEpochSecond()); CookieManager manager = new CookieManager(); manager.getCookieStore().add(null, cookie); HttpClient client = HttpClient.newBuilder().cookieHandler(manager).build(); HttpRequest.Builder request = HttpRequest.newBuilder().method("GET", HttpRequest.BodyPublishers.noBody()); try { day1("https://adventofcode.com/2022/day/1/input"); } catch (Exception e) { e.printStackTrace(); }

Дальше стану выкладывать решения по дням в том или ином виде, а весь список можно будет найти по тегу adventofcode-2022.

Присоединяйтесь!

11
11 комментариев

Первый мой год в AoC и вот что могу сказать: первые 6 дней - too easy, 7 день с обходом дерева - уже не тривиально, 8 день с выбором самого высокого дерева - чуть проще, чем день 7. А вот день 9 - фактически, "змейка". Наверное, надо решать через ООП. В общем, хороший повод подтянуть пробелы как в программировании, так и в алгоритмах. Кайф, короче. В общем, айда помогать гномам!

Вопрос автору: а в чем смысл стучаться через АПИ? Просто чтобы не вбивать ответ руками?

Автор

Пока только до пятого успел дойти, поздно начал. Может, на выходных время позволит догнать календарь. Ну и решения повыкладывать.
Нет, почему, ответы руками ввожу. Это вытягивание условий. Там же длинные портянки, всё равно их считывать откуда-то удобней - так почему бы напрямую с сайта не подгружать.