Re: Advent of Code
Умова: знайти в стрічці першу підстрічку з n різних символів. Повернути номер символу після закінчення цієї підстрічки:
1. n=4
2. n=14
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Алгоритми та структури даних, технології → Advent of Code
Сторінки Попередня 1 … 4 5 6 7 8 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
Умова: знайти в стрічці першу підстрічку з n різних символів. Повернути номер символу після закінчення цієї підстрічки:
1. n=4
2. n=14
Умова: є команди оболонки (обрізані cd і ls), якими пройшлися по всій файловій системі. Треба:
1. Знайти суму місця, займану теками, меншими за 100_000 (з урахуванням підтек);
2. Знайти розмір найменшої теки, видалення якої звільнить 30_000_000 із загального простору в 70_000_000.
Ще одна штука, яку Rust ненавидить. З тієї ж причини, що й 2022#5. Рекурсію при побудові дуже складно робити, доводиться всі операції з рута починати і повний шлях проходити.
Хоча зараз подумав, що може не все так погано - треба мувати значення з дерева, модифікувати і класти на місце. Можливо. У мене щось голова зовсім не варить, я кілька хвилин не міг правильно вільне місце обчислити, доки не розбив на дві операції:
let unused = 70_000_000 - current_size;
let needed = 30_000_000 - unused;
Правда, вчора я добив 2019#10 з арктангенсами, підозрюю, що це саме через нього.
Kod povne mêsyvo, treba bude pôdpravyty jakosj.
Kek, moźna bulo bez dereva i rekurcij. I ce ± oćevydno. Tobto nabyrajemo strôćky (abo śćosj take, ale tut najlehśe) i sumujemo vsji strôćky, kotri poćynajutj sja z…
Śće smêśnêśe, śćosj take krutylo sja na jazycê, ale ti rankovi vymyky elektriky — cjoho razu hetj nezvyćni: vkljućaly na 20 xv desj v 2~4 hodyny — mene teź rozumovo dokonaly. Na śćastje, moźlyvo ćerez uspêx perśojê, druha ćastyna bula duźe lehkoju dlja mene, odrazu zdohadav sja pro ce rôvnjannje. I aby bulo śće smêśnêśe, bulo ± podôbna zadaća desj v mynulyx rokax, bo śćosj take pryhaduju i mav same take rêśennje.
Prykald vôd odnoho majstera.
Ne mav elektriky majźe vesj denj abo mav spravy ćy todi ne bulo interneta. Ale ja vstyh zrobyty ce za denj (tak, znaju, śćo pośću vźe pôslja 24, ale ja vźe zapostyv desj v meźax 24). Z sumnoho, zrobleno jak dvê okremi zadaćy. Moźe zhodom sprobuju skombinyty.
Умова: є матриця висот дерев у лісі (посадці рівними рядками і стовпчиками).
1. Дерево вважається видимим, якщо вгору, вниз, праворуч чи ліворуч від нього всі нижчі. Знайти кількість дерев, невидимих іззовні лісу.
2. Для кожного дерева вводиться оцінка - добуток відстаней, на які можна подивитися з нього, до найближчого не нижчого дерева чи краю лісу. Знайти дерево з максимальною оцінкою.
Щось у другому з ітераторами перемутив, ну і біс із ним.
Умова: є мотузка з сегментів на дискретній площині. Коли тягнуть голову мотузки на 1 клітинку, кожен наступний сегмент, що відірвався від попереднього, робить 1 крок по діагоналі, горизонталі чи вертикалі у його бік (пріоритет у діагоналі). Для заданого маршруту знайти кількість точок, відвіданих хвостом, якщо довжина мотузки: 1. 2 сегменти; 2. 10 сегментів.
Більше б таких задач
Perśu ćastynu ustyh zrobyty vrancê do vymyku. Druhu dorobyv śćojno.
Умова: є мотузка з сегментів на дискретній площині. Коли тягнуть голову мотузки на 1 клітинку, кожен наступний сегмент, що відірвався від попереднього, робить 1 крок по діагоналі, горизонталі чи вертикалі у його бік (пріоритет у діагоналі). Для заданого маршруту знайти кількість точок, відвіданих хвостом, якщо довжина мотузки: 1. 2 сегменти; 2. 10 сегментів.
▼2022#9, RustБільше б таких задач
Ehe, zadaćka pryjmna. Tam mytj, koly Rast rôvnyj abo koroće za Pajton. Baću, moźna dobrjaće pokraśćyty moju funkciju touching, ale poky lênjky. Dorećy, vêtaju zô vzjattjem — sota povêdoma.
Tym ćasom: <Placing #1 in Advent of Code with GPT-3, AI solves Advent of Code 2022>.
Тим часом він одне завдання зафейлив і відстав на кілька днів.
Я повернувся (і до AoC теж).
Умова: є комп'ютер з двома командами (noop і addx) і одним регістром x. noop виконується 1 такт, addx - 2 такти. Такти нумеруються з 1, початкове значення x=1.
1. Знайти суму #такта * x в моменти #такта =20+40n.
2. Є екран 6x40. По рядках пробігає спрайт (позиції 0..39 включно) синхронно з комп'ютером. Якщо під час такту t спрайт знаходиться в межах x-1..x+1 - на екрані у відповідному місці #, якщо ні - . Прочитати літери з екрана.
Умова: мавпи вкрали речі і граються ними. Кожній речі присвоєний рівень хвилювання (за цю річ). У кожної мавпи є: номер, список речей, формула перетворення рівня хвилювання (new=old+n,new=old*n чи new=old*old), формула перевірки (чи ділиться рівень хвилювання на число t) і номери мавп, яким річ перекидається залежно від формули перевірки.
Кожна послідовно взята за номером мавпа бере речі по одній, оглядає (при цьому рівень хвилювання зростає за формулою) і кидає іншій, поки в останньої не закінчаться речі. Знайти добуток двох найбільших кількостей оглядів у мавп.
1. Змоделювати 20 циклів перекидання, рівень хвилювання після застосування формули перетворення ділити націло на 3.
2. Змоделювати 10_000 циклів перекидання, рівень хвилювання не ділити.
Умова: є прямокутна мапа висот з малих літер від a до z. На ній також позначені початок маршруту (S) і кінець (E). Висота S=a, E=z. Переходити на сусідню клітку можна лише якщо її висота не більша за поточну +1 (тобто з k можна перейти на l чи a, але не на n). Треба знайти:
1. Довжину найкоротшого шляху з S до E.
2. Найкоротшу довжину можливого шляху з будь-якого a до E.
Є потік пар "пакетів" - вкладених масивів чисел (на кшталт "[[1],[2,3,4]]"). Пакети порівнюються послідовно таким чином:
- якщо мають різні числа - за величиною чисел;
- якщо число порівнюється з масивом, то число "загортається" в масив перед порівнянням;
- якщо масиви мають різну довжину і всі однакові елементи перед тим - то порівнюються довжини.
1. Знайти суму індексів (від 1) неправильно впорядкованих пар
2. Додати до пакетів ще два ([[2]] і [[6]]), відсортувати усі пакети і знайти добуток індексів (від 1) цих двох доданих пакетів.
Викинув якийсь старий пакет json, поставив стандартний serde_json. Особливо приємно, що функція порівняння, яку я написав для першого завдання, зайшла і для другого.
Зробив 2019-13 (код комп'ютера див. вище... хоча, здається, його ще довелося потім трохи модифікувати)
Умова: програма для комп'ютера видає "зображення" гри на кшталт арканоїда у вигляді трійок (x,y,t) - координат і типу комірки.
1. Порахувати кількість блоків з кодом 2 - це я в 2019 зробив.
2. Замінивши перший байт пам'яті комп'ютера перед запуском на 2, зіграти в арканоїд. На вхід очікується -1, 0 або 1 - ліво, на місці або право відповідно. Також комп'ютер іноді видає рахунок у вигляді (-1, 0, рахунок). Коли будуть збиті усі блоки, який буде рахунок?
Умова: є мапа блоків, на які зверху (з однієї точки) сиплеться пісок. Кожна піщинка намагається спершу "впасти" униз, потім униз-ліворуч, потім униз-праворуч.
1. Скільки піщинок впаде, доки вони досягнуть дна?
2. Скільки піщинок впаде, доки взагалі можна буде додавати піщинки?
За цей код мені дещо соромно, але в релізній збірці на моєму Ryzen 5 1600 вкладається в 4 секунди, а це головне, правильно? Я абсолютно певен, що цей код можна дуже сильно оптимізувати
Умова: є набір сенсорів і маячків на цілочисельній площині. Сенсори показують координати свої і найближчого до себе (за манхеттенською відстанню) маячка.
1. На прямій y=2_000_000 знайти кількість клітин, де не може бути маячка (тобто вони ближче до якогось сенсора, ніж його маячок).
2. У квадраті (x=0..4_000_000, y=0..4_000_000) знайти єдину точку, про яку сенсори нічого не кажуть.
Так, почалося.
#16 - які будуть ідеї? Познаходити довжини шляхів між ненульовими кранами і далі перебором лише серед них?