Web Overflow 🇺🇦
4.32K subscribers
388 photos
40 videos
3 files
519 links
Затишний блог про веб-розробку і не тільки 💛

Чат: @web_overflow_chat
Співпраця: @web_overflow_support
Автори: @lluchkaa & @anastasiia_tarasenko
Download Telegram
Advent of Code 2024, Day 6 🎄

Сьогоднішнє завдання коротко: текстовий файл представляє мапу, де кожен символ є окремою клітинкою. Пробіл позначає вільну клітинку, # - перешкоду, ^ - початкову точку сторожа. Сторож рухається по мапі, а у випадку зустрічі перешкоди повертає праворуч. Початковий напрямок руху сторожа - вгору. Скільки окремих клітинок відвідає сторож на своєму шляху, перш ніж вийти за межі мапи?

Завдання із зіркою: Можна додати одну перешкоду так, щоб сторож потрапив у цикл. Скільки існує можливих позицій для додавання такої нової перешкоди?

👉 Відкрити посилання

❗️Нагадуємо: код до приватного Leaderboard - 3111715-18668836

#aoc
👍43
Advent of Code 2024, Day 7 🎄

Сьогоднішнє завдання коротко: дано число target та масив чисел nums. Чи можливо розставити знаки + та * між числами nums так, щоб результат був рівний target?

Важливо: операції виконуються зліва направо, множення не має пріоритету над додаванням.

Завдання із зіркою:
додатково вводиться ще одна операція — конкатенація двох чисел. Чи можливо тепер отримати потрібний результат?

👉 Відкрити посилання

#aoc
👍5🤯2
Advent of Code 2024, Day 8 🎄

Сьогоднішнє завдання досить складно описати коротко, тому краще одразу переходьте за посиланням. Однак ми все ж спробуємо.

Сьогоднішнє завдання коротко: дано двовимірну мапу міста, де кожен символ — антена (окрім .). Сам символ означає частоту. Кожна пара антен з однаковою частотою має дві точки пучності. Для двох антен A і B з однаковою частотою точки пучності розташовуються:
- На прямій AB.
- У точках, дзеркально відображених відносно антени (точка, симетрична точці B відносно точки A, і навпаки).

Потрібно визначити, скільки унікальних точок пучності існує на мапі.

Завдання із зіркою:
Точки пучності знаходяться не лише на відстані вдвічі більшій за відстань між парою антен, а й на всій прямій, де розташовані антени, з постійним кроком, рівним відстані між антенами (обчислювати лише в межах мапи).

👉 Відкрити посилання

#aoc
4👍2🤯2
Advent of Code 2024, Day 9 🎄

Сьогоднішнє завдання коротко: дано доооовгий рядок, який відображає пам’ять диска. У рядку присутні тільки цифри. Перша цифра позначає кількість пам’яті, яку займає файл із ID=0, друга цифра позначає кількість вільної пам’яті, третя цифра — кількість пам’яті файлу з ID=1 і т. д.

2233133 => 00..111...2...333

1. Потрібно дефрагментувати диск: беручи файли з кінця, потрібно заповнити вільну пам’ять від початку диска.
00..111...2...333 => 003311132

2. Після цього обчислити чексуму: суму цифр у кожній комірці пам’яті помножену на індекс комірки.

⁉️ Яку структуру даних ви оберете для виконання такого завдання?

Завдання із зіркою:
Якщо зліва немає достатнього цілісного шматка вільної пам’яті, в який би вмістився весь поточний файл, потрібно залишити його на поточному місці.

👉 Відкрити посилання

❗️ Створюйте git-репозиторій, опублікуйте його та поділіться посиланням у коментарях.

#aoc
2👍1
Advent of Code 2024, Day 10 🎄

Сьогоднішнє завдання коротко: дано вхідний файл, який позначає мапу розміром m*n. Кожна клітинка - цифра від 0 до 9, що позначає висоту сходинки. Рухатися по мапі можна горизонтально та вертикально. Шукатимемо стежки, які починаються зі сходинки 0, закінчуються на сходинці 9 (вершина) та збільшують висоту сходинки на 1 на кожному кроці. Для кожної 0-ї сходинки потрібно знайти кількість 9-их сходинок, яких можна досягнути, та обчислити їх суму на мапі.

Завдання із зіркою:
необхідно знайти не кількість вершин (9-та сходинка), а кількість унікальних шляхів до неї.

👉 Відкрити посилання

❗️Не забувайте долучатись до нашого приватного Leaderboard - 3111715-18668836

#aoc
2👍2
Advent of Code 2024, Day 11 🎄

Сьогоднішнє завдання коротко: є кілька каменів, які лежать у рядок, кожен камінь представлений числом. Кожного разу, коли ви моргаєте, камені змінюються за такими правилами:

1. Якщо число каменя дорівнює 0, воно змінюється на 1.
2. Якщо у числі каменя парна кількість цифр, камінь розділяється на два камені: перший із числом, сформованим із лівої половини цифр, а другий — із правої.
3. Якщо попередні правила не виконуються для каменя, його число множиться на 2024.

Наприклад:
Вхідний рядок: 125 17 0
Після одного моргання: 253000 1 7 1

Питання: Скільки каменів буде у рядку після того, як ви моргнете 25 разів?

Завдання із зіркою:
А якщо 75 разів?

👉 Відкрити посилання

#aoc
4👍1
Advent of Code 2024, Day 12 🎄

Сьогоднішнє завдання коротко: дано двовимірну мапу саду, де кожна клітинка містить певну рослину. Якщо дві однакові рослини дотикаються горизонтально або вертикально, вони утворюють спільну ділянку. Ельфи хочуть збудувати лавку навколо кожної такої ділянки.

Ціна лавки для кожної ділянки обчислюється за формулою: Ціна = Периметр ділянки × Площа ділянки.

Периметр ділянки — це сума сторін клітинок, які:
- межують із краєм саду,
- або межують із клітинкою, яка містить іншу рослину.

Площа ділянки — це кількість клітинок у ділянці.

Завдання: Знайти загальну вартість побудови лавок для всіх ділянок саду.

Завдання із зіркою:
ціна лавки обчислюється за формулою: Площа ділянки * Кількість сторін ділянки.

👉 Відкрити посилання

#aoc
3👍2
Advent of Code 2024, Day 13 🎄

Сьогоднішнє завдання коротко: на ігровому автоматі знаходиться іграшка, координати якої задані як X та Y. Щоб дістати іграшку, потрібно перемістити лапу автомата до цих координат, починаючи з початкової позиції (0, 0).

Для керування лапою доступні дві кнопки:
- Кнопка A пересуває лапу на XA по осі X та YA по осі Y. Натискання цієї кнопки коштує 3 монетки.
- Кнопка B пересуває лапу на XB по осі X та YB по осі Y. Натискання цієї кнопки коштує 1 монетку.

Потрібно розрахувати мінімальну кількість монет, необхідних для досягнення координат (X, Y).

Завдання із зіркою:
іграшка знаходиться в координатах 10000000000000 + X та 10000000000000 + Y.

👉 Відкрити посилання

#aoc
👍4
Advent of Code 2024, Day 14 🎄

Сьогоднішнє завдання коротко: на мапі розміром 101x103 розміщені роботи. Щосекунди вони постійно рухаються за певним правилом: на x клітинок вправо та на y клітинок вниз. Якщо робот виходить за межі мапи, він телепортується на протилежний бік. Карта розділена на 4 квадранти середніми лініями.

Потрібно обчислити кількість роботів у кожному квадранті через 100 секунд.

Завдання із зіркою: у певний момент часу більшість роботів утворюють фігуру, схожу на ялинку.

Потрібно визначити, через скільки секунд це трапиться.

👉 Відкрити посилання

#aoc
👍61
Advent of Code 2024, Day 15 🎄

Сьогоднішнє завдання коротко:

На мапі зображено:
- робота: @,
- коробки: O,
- стіни: #.

Також є список інструкцій для робота:
^ — рух угору,
> — вправо,
v — вниз,
< — вліво.

Якщо у напрямку руху порожня клітинка, робот переміщається на неї. Якщо ж у напрямку робота стіна, він залишається на місці. Якщо перед роботом знаходиться коробка, він спробує штовхнути її (а також усі інші коробки, що стоять впритул), але тільки за умови, що з іншого боку немає стіни.

Потрібно визначити місце розташування всіх коробок після виконання всіх інструкцій.

Завдання із зіркою:
Коробки позначені двома символами: [], та їх завжди переміщують як одне ціле.

👉 Відкрити посилання

#aoc
👍42
Advent of Code 2024, Day 16 🎄

Сьогоднішнє завдання коротко: на мапі зображено лабіринт:
- початок: S,
- кінець: E,
- стіни: #.

На початку ми повернуті направо. Кожен крок уперед коштує 1 очко, а кожен поворот вправо або вліво — 1000 очок.

Потрібно визначити, за яку мінімальну кількість очок можна пройти лабіринт.

Завдання із зіркою: ймовірно, існує кілька шляхів із мінімальною вартістю. Скільки клітинок належить хоча б до одного такого шляху (включно з початком і кінцем)?

👉 Відкрити посилання

#aoc
👍31
Advent of Code 2024, Day 17 🎄

Сьогоднішнє завдання коротко: реалізувати невеликий інтерпретатор команд. Існує три регістри: A, B і C, вісім команд та літерали. Одна з команд виводить дані.

Потрібно визначити, який буде вивід програми.

Детальний опис роботи кожної команди читайте на сайті Advent of Code, оскільки їх складно стисло пояснити в одному повідомленні.


Завдання зі зірочкою: за певного значення регістра A програма може вивести саму себе. Яке найменше значення цього регістра дозволить це зробити?

👉 Відкрити посилання

#aoc
👍6🔥2
Advent of Code 2024, Day 18 🎄

Сьогоднішнє завдання коротко: знову лабіринт. Дано список координат клітинок. Щосекунди кожна наступна клітинка зі списку стає стіною. Потрібно знайти вихід із лабіринту, починаючи з точки (0, 0) і завершуючи в точці (70, 70).

Потрібно визначити, яку мінімальну кількість кроків потрібно зробити, щоб пройти лабіринт на 1024-ій секунді.

Завдання із зірочкою: визначити, на якій секунді прохід буде заблоковано.

👉 Відкрити посилання

#aoc
👍62
Advent of Code 2024, Day 19 🎄

Сьогоднішнє завдання коротко: у нас є набір рушників, де кожен рушник має свій унікальний порядок кольорових смужок.

Наприклад:
r - рушник із червоною смужкою;
bb - рушник із двома синіми смужками;
rgb - рушник із червоною, зеленою та синьою смужкою.

Кількість рушників кожного типу необмежена.

Також є список «шаблонів» - це послідовності кольорів, які потрібно скласти з рушників.

Наприклад:
Шаблон rbb можна скласти з рушників r і двох b.
Шаблон rrgbb можна скласти кількома способами, наприклад, з рушників r, rgb, b або з двох r, одного g і рушника bb.

Потрібно визначити, скільки шаблонів можливо скласти із заданих рушників.

Завдання із зірочкою: знайти кількість можливих варіантів складання кожного шаблону з рушників та підсумувати ці числа для всіх шаблонів.

👉 Відкрити посилання

#aoc
3👍2
Advent of Code 2024, Day 20 🎄

Сьогоднішнє завдання коротко: у нас є 2-вимірна мапа, яка відображає трек для гонок. На ній:
S - початок;
E - кінець;
. - траса;
# - стіна.

Кожен рух на сусідню клітинку коштує 1 пікосекунду. Але є особливість: ви маєте 2 пікосекунди для "мухлювання". Це означає, що ви можете перестрибнути одну стіну:
- перша пікосекунда витрачається на перехід на стіну;
- друга - на повернення на трасу.

Потрібно визначити, скільки існує варіантів такого "мухлювання", які дозволяють зекономити щонайменше 100 пікосекунд.

Завдання із зірочкою: у цьому випадку у вас є 20 пікосекунд для мухлювання. Вони можуть бути використані лише в одному безперервному відрізку, не розділяючи.

👉 Відкрити посилання

#aoc
👍52
Advent of Code 2024, Day 21 🎄

Сьогоднішнє завдання коротко: є цифрова клавіатура у форматі:
789
456
123
0A


З нею працює робот, який може рухатись вгору, вправо, вниз та вліво. Цей робот керується клавіатурою зі стрілками у форматі:
^A
<v>


А - виконати натискання.

Однак, цією клавіатурою також керує інший робот. Усього є ланцюжок із 5 таких клавіатур і 5 роботів, які один за одним передають команди. Ви керуєте шостою клавіатурою і управляєте п'ятим у черзі роботом.

Потрібно визначити, які кнопки на своїй клавіатурі вам потрібно натиснути, щоб у результаті введення команд було виконано заданий код.

Завдання побудоване доволі складно і дуже цікаве, тому відкривайте посилання, щоб прочитати усю історію детально.


Завдання із зірочкою: існує 1 цифрова клавіатура, з якою працює робот, 25 клавіатур з стрілками, з якими працюють роботи і 1 клавіатура з стрілками, якою керуєте ви.

👉 Відкрити посилання

#aoc
👍4🤯4
Advent of Code 2024, Day 22 🎄

Сьогоднішнє завдання коротко: реалізувати генератор псевдовипадкових чисел.

Для генерації псевдовипадкових чисел маємо задане початкове число. Алгоритм для обчислення наступного числа виконується в три етапи:
1. Домножити поточний результат на 64, виконати операцію mix із поточним результатом і застосувати операцію prune.
2. Поділити число на 32, виконати операцію mix із поточним результатом і застосувати операцію prune.
3. Домножити число на 2048, виконати операцію mix із поточним результатом і застосувати операцію prune.

mix — виконати бітову операцію XOR між з результатом попереднього обчислення.
prune — обчислити залишок від ділення числа на 16 777 216.

Потрібно обчислити, яке число буде згенеровано на 2000-й ітерації алгоритму.

👉 Відкрити посилання

#aoc
👍41
Advent of Code 2024, Day 23 🎄

Сьогоднішнє завдання коротко: Дано пари компʼютерів, які знаходяться в одній мережі, у форматі xx-yy.

Потрібно обчислити кількість унікальних триплетів (наборів із 3 компʼютерів), які перебувають в одній мережі та містять хоча б один компʼютер, імʼя якого починається з літери t.

Завдання із зірочкою: знайти найбільший за кількістю набір комп'ютерів, які мають зв'язок один з одним.

👉 Відкрити посилання

#aoc
👍41
Advent of Code 2024, Day 24 🎄

Сьогоднішнє завдання коротко: Потрібно обчислити значення в різних точках логічної схеми.

Дано початкові значення на деяких проводах, наприклад:
x00: 1
x01: 1
y00: 0
y01: 1


Також наведені описи елементів схеми у випадковому порядку. У схемі використовуються три операції: AND, OR, XOR. Наприклад:
x00 AND y00 -> z00
x01 XOR y01 -> z01
x02 OR y02 -> z02


Потрібно визначити значення на всіх проводах.

Завдання із зірочкою: виявляється, що вся схема має виконувати додавання чисел x та y, представлених проводами, що починаються на x та y відповідно. Результат повинен записуватися на вихідних проводах z. Однак зараз додавання працює некоректно, оскільки 4 пари вихідних проводів переплутані. Потрібно визначити, які саме пари проводів були переплутані.

👉 Відкрити посилання

#aoc
👍6🤯32
Advent of Code 2024, Day 25 🎄

Сьогодні, на Різдво, відкривається остання комірка AoC.

У цей день ми хочемо подякувати всім, хто був із нами в цій подорожі! Це була чудова можливість навчитися проходити лабіринти, опанувати рекурсію та розв’язати безліч цікавих задач.

👉 Відкрити посилання

#aoc
🎉7👍41