Я начал участвовать в AoC в 2015 году, когда прочитал пост на Хабре. В тот, первый, год пост появился поздно, 17 декабря, по этому в этом году мне захотелось напомнить об AoC заранее, чтобы желающие могли начать с самого начала.
AoC проходит 25 дней, с 1 до 25 декабря, сложность задач возрастает от тривиальной до невозможной. Все задачи связаны общим сюжетом, и постепенно открывают анимированную картинку.
AoC отличается от классических соревнований по программированию тем, что сам код сдавать не надо, а решение можно делать на любом языке (на реддите есть ребята которые решают на разной экзотике, и даже экселе). Интересная особенность в том, что сдавать нужно только ответ (можно даже посчитать его на бумаге, но это будет оочень долго.)
AoC поощряет писать поддерживаемый код, так как задача каждого дня состоит из двух частей, и те кто смог использовать код первой части для сдачи второй получают существенное преимущество.
Задачи очень разнообразны, попадаются классические алгоритмы поиска, задачи на китайскую теорему об остатках, и множество заданий на разработку оптимизирующего компилятора/интерпретатора ассемблера, который меняется каждый год ;)
На реддите присутствует дружелюбное комьюнити
Есть интересный доклад от создателя проекта и автора задач:
В таблице рекордов из того, первого поста еще 100 свободных мест, вот ее ID для подключения: 55074-c2e83c69
Комментарии (10)
impwx
25.11.2021 19:28+1Для тех кто устал перекладывать JSON-ы и шлепать формы
Участвовал в первые три года его существования, и задачи каждый раз были примерно одинаковые:
- Напиши переборщик хешей до нахождения нужного числа нулей в начале
- Напиши поиск по лабиринту в ширину
- Напиши интерпретатор для ассемблеро-подобного языка, который должен содержать эвристические оптимизации чтобы программа выполнилась за разумное время
На четвертый год решил не участвовать...
farafonoff Автор
26.11.2021 09:08Прошлый год прямо интересный был, я бы на вашем месте дал еще шанс.
commanderxo
28.11.2021 17:36+2После того как открыл Advent Of Code, моя годовая история ГитХаб стала выглядеть вот так:
С нетерпеньем жду среды!
forthuser
Насколько, например, решение таких задач в рамках АОС отличается от решения пополняемых задач с http://rosettacode.org/wiki/Rosetta_Code?
P.S. Экзотических языков и даже решения на них на них разных задач есть в рамках и этой Wiki площадки, если кто то добавил решение на выбранном языке :)
Есть и некоторый рейтинг популярности языков этой площадки
shoco
В АОС есть какой-никакой сюжет, чувство прогрессии за счёт сбора звёзд и конечная достижимая цель (собрать 50 звёзд). Этот элемент игроизации серьёзно мотивирует особо ленивых кодеров вроде меня
farafonoff Автор
Совершенно разная направленность проектов. AoC познавательно-развлекательный, никто не сохраняет решения "на века" (хотя я храню свои в гитхабе: https://github.com/farafonoff/AdventOfCode , и вижу такие репозитории у многих игроков).
forthuser
Примерно так и представлял, что решаются задачи где то близкие в постановке
и, вероятно, более акцентированные на практическом аспекте их понимания и применения.
P.S. Поисковый запрос AdventOfCode на Github выводит больше всего репозиториев на Python языке (возможно и наибольшее форков их)
Интересно какие задачи выходят в «трэнд» по сравнению с ранее предлагаемыми на конкурс в ретроспективе по годам.
farafonoff Автор
по моим ощущениям, с 15 по 19 годы нарастало количество задач на имплементацию ассемблера, в апогее было что-то такое https://adventofcode.com/2019/day/13 (в этой задаче нужно программно сыграть в пинг-понг с машиной написанной на ассемблере).
20 год был больше сфокусирован на головоломках (например https://adventofcode.com/2020/day/17, 3 или 4х мерная "жизнь").
Питонисты находятся в некотором преимуществе из-за хороших библиотек типа np, в которых многие вещи реализованы из коробки. Я на js как-то раз потратил целый час чтобы найти библиотеку для BigInt с операцией modPow
commanderxo
Да, 2019 был просто роскошным. У многих задач была физическая интерпретация, а раз так, то можно попробовать решить их на экзотическом железе. Вот пара моих решений:
forthuser
В этом году, пара проектов решения задач с AoC 2021 на Github стартанули с использованием Forth языка.
aoc2021
AoC21Forth
P.S. Первый, похоже, пока в «игре». :)