#advent_of_code_2024
Day 10
https://adventofcode.com/2024/day/10
Part 1
Класична dfs задачка.
Парсимо матрицю. Знаходимо нулі, для них стартуєм dfs функцію: додаємо в робочий масив координати з метаданими координат початку і для кожних суміжних клітинок перевіряємо, чи можна туди "зайти", таким чином, додаємо нові дані в цей робочий масив. Коли можемо перейти в 9: записуємо дані в мапу.
Після проходження dfs, читаємо дані з мапи, знаходимо унікальні пари гешмапи 0-9 та видаємо це за відповідь.
Part 2
Як бачимо, дизайн першої частини підходить під другу. Замість того, щоб зберегати унікальні пари, тепер будемо накопичувати кількість таких пар: якщо з точки А в точку Б можна пройти 3 способами, то зберігаємо число 3, таким чином, сумуємо всі такі способи і отримуємо результат.
солюшн тут: https://github.com/Pyroarsonist/advent-of-code-2024
Day 10
https://adventofcode.com/2024/day/10
Part 1
Класична dfs задачка.
Парсимо матрицю. Знаходимо нулі, для них стартуєм dfs функцію: додаємо в робочий масив координати з метаданими координат початку і для кожних суміжних клітинок перевіряємо, чи можна туди "зайти", таким чином, додаємо нові дані в цей робочий масив. Коли можемо перейти в 9: записуємо дані в мапу.
Після проходження dfs, читаємо дані з мапи, знаходимо унікальні пари гешмапи 0-9 та видаємо це за відповідь.
Part 2
Як бачимо, дизайн першої частини підходить під другу. Замість того, щоб зберегати унікальні пари, тепер будемо накопичувати кількість таких пар: якщо з точки А в точку Б можна пройти 3 способами, то зберігаємо число 3, таким чином, сумуємо всі такі способи і отримуємо результат.
солюшн тут: https://github.com/Pyroarsonist/advent-of-code-2024
GitHub
GitHub - Pyroarsonist/advent-of-code-2024: https://adventofcode.com/2024
https://adventofcode.com/2024. Contribute to Pyroarsonist/advent-of-code-2024 development by creating an account on GitHub.
#advent_of_code_2024
Day 11
https://adventofcode.com/2024/day/11
Part 1
Дуже багато тексту, а насправді легка задачка.
Фактично, все що треба написати, так це функцію трансформації одного масиву каменів в інший.
Так і робимо: для кожного каменя в масиві пишемо іфи для перевірки на нуль, перевірки на парність кількості цифр в камені (приводимо його в строку) та останню операцію множення і проводимо таких ітерацій 25 штук (як сказано в задачі), отримуємо результат.
Part 2
Цікава друга частина, умова та ж сама, але кліпаємо очима тепер 75 раз, а не 25 і звичайно часу на обчислення було дуже багато, треба перероблювати наївний алгоритм.
Очевидно, що тут треба заюзати динамічне програмування і кешувати проміжні результати, але яким чином ітеруватися по камінням?
Дуже просто: будемо рахувати кількість каменів для кожного значення рекурсивно, враховуючи кількість кліпань.
Нехай у нас є масив каменів: для кожного з них сумуємо їх кількості каменів (але вже понижуючи кількість кліпань на 1): кожного разу, коли обчислили скільки у каменю є кількість каменів після трансформації, записуємо це в кеш разом з кількістю кліпань. Зрозуміло ж, що для каменя 0 з кліпанням 1 буде кількість каменів 1 (бо масив - [1]), але для такого ж самого каменю 0 з кліпанням 10 буде кількість каменів 39.
Оскільки для кожного каменю ми будемо брати кеш або рекурсивно дізнаватись кількість каменів у трансформованих: будемо мати високу швидкість, в мене вийшло десь 64мс, замість використання 1 частини, де процес проходить більше за 1 хвилину.
солюшн тут: https://github.com/Pyroarsonist/advent-of-code-2024
Day 11
https://adventofcode.com/2024/day/11
Part 1
Дуже багато тексту, а насправді легка задачка.
Фактично, все що треба написати, так це функцію трансформації одного масиву каменів в інший.
Так і робимо: для кожного каменя в масиві пишемо іфи для перевірки на нуль, перевірки на парність кількості цифр в камені (приводимо його в строку) та останню операцію множення і проводимо таких ітерацій 25 штук (як сказано в задачі), отримуємо результат.
Part 2
Цікава друга частина, умова та ж сама, але кліпаємо очима тепер 75 раз, а не 25 і звичайно часу на обчислення було дуже багато, треба перероблювати наївний алгоритм.
Очевидно, що тут треба заюзати динамічне програмування і кешувати проміжні результати, але яким чином ітеруватися по камінням?
Дуже просто: будемо рахувати кількість каменів для кожного значення рекурсивно, враховуючи кількість кліпань.
Нехай у нас є масив каменів: для кожного з них сумуємо їх кількості каменів (але вже понижуючи кількість кліпань на 1): кожного разу, коли обчислили скільки у каменю є кількість каменів після трансформації, записуємо це в кеш разом з кількістю кліпань. Зрозуміло ж, що для каменя 0 з кліпанням 1 буде кількість каменів 1 (бо масив - [1]), але для такого ж самого каменю 0 з кліпанням 10 буде кількість каменів 39.
Оскільки для кожного каменю ми будемо брати кеш або рекурсивно дізнаватись кількість каменів у трансформованих: будемо мати високу швидкість, в мене вийшло десь 64мс, замість використання 1 частини, де процес проходить більше за 1 хвилину.
солюшн тут: https://github.com/Pyroarsonist/advent-of-code-2024
GitHub
GitHub - Pyroarsonist/advent-of-code-2024: https://adventofcode.com/2024
https://adventofcode.com/2024. Contribute to Pyroarsonist/advent-of-code-2024 development by creating an account on GitHub.
🔥1
https://youtu.be/eKKFuyiUrFo
це офігенно
це офігенно
YouTube
Kingdom Come: Deliverance II Official Live Action - Combat
A noscripted live-action series starring Tom McKay and Luke Dale, the lead actors of KCD II, bringing their Henry & Hans buddy chemistry from 1403 into a modern-day setting.
In the second part, Tom and Luke are found amidst the beautiful Trosky region — the…
In the second part, Tom and Luke are found amidst the beautiful Trosky region — the…