Re: Advent of Code
Pobaćyv rêśennja zadaćy, de ne treba stvorjuvaty tablycjy, prosto ćerez ord i moduljnu matematiku. Dosytj elegantno.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Алгоритми та структури даних, технології → Advent of Code
Сторінки Попередня 1 2 3 4 5 6 7 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
Pobaćyv rêśennja zadaćy, de ne treba stvorjuvaty tablycjy, prosto ćerez ord i moduljnu matematiku. Dosytj elegantno.
zamnênyty
Це помилка чи якась особливість вашої латинки? В слові "замінити" одне н.
dot написав:zamnênyty
Це помилка чи якась особливість вашої латинки? В слові "замінити" одне н.
Pomylka.
Умова: ельфи несуть рюкзаки з речами (стрічки латинських символів). Кожна річ має вартість (маленька літера a-z - 1-26, велика A-Z - 27-52).
1. Знайти у кожному рюкзаку єдину річ, що повторюється в першій і другій половині, повернути суму вартостей цих речей.
2. Ельфи йдуть групами по троє (в заданому у вхідних даних порядку). Знайти у кожній трійці спільну річ, повернуту суму вартостей цих речей.
Для того, щоб не дарма займатися, поставив Clippy (досі без нього працював). Дуже цікаві попередження виявляє - і переважно одразу пропонує рішення, але в складних випадках не працює.
Znov ź taky, majstery Pajtona zavoroźujutj.
Kolysj pôdvezutj sjudy normaljnu kolorizatsiju kodôv…
Moźna bulo śće prosto porôvnjuvaty granycjy, ale menê lênjky rozpysuvaty umovy, a programa vykonuje sja mytjovo.
Dekotra zmêna. Bulo:
if full and (first.issubset(second) or second.issubset(first)) or not full and first.intersection(second):
Ale zarady cêkavynky perevêryv i nastupnyj konstrukt cêlkom roboćyj:
if first.issubset(second) or second.issubset(first) if full else first.intersection(second):
Zrućno, tobto ne treba propysuvaty if X and A or not X and B, dostatnjo if A if X else B.
Умова: у ельфів є завдання за номерами, наприклад, 3-6 означає 3, 4, 5, 6. Ельфи поділені на пари. У деяких пар завдання накладаються і перетинаються (скажімо, 3-6,4-5 - завдання другого ельфа повністю вкладається в завдання першого). Треба знайти кількість:
1. Пар, завдання яких повністю накладаються
2. Пар, завдання яких перетинаються (включаючи п.1)
У Rust все одно доводиться трохи більше писати (ну не виходить просто розібрати вираз на 4 числа), а я швидко починаю плутатися, де у мене там ліво, де право, де праве значення лівого ельфа і т.д. Тому типи і функції. На жаль, RangeInclusive не надає доступу до своїх елементів, тому довелося власний тип проголошувати.
Переробив свій проєкт на Rust, код скоротився, тепер дописувати про наявність нового файла треба лише в одному місці. Заразом усе трохи причесав, замінив дещо застарілий lazy_static на OnceCell і нарешті пройшовся по всьому коду Clippy.
Засів переробляти 2019 рік - там треба емулятор запрограмувати (інструкції додаються поступово в нових завданнях). Зробив завдяки цьому раніше не зроблене 2019#7-2.
Умова: є схема розміщення коробок і план їх переміщення. З'ясувати, які коробки опиняться нагорі в результаті, якщо:
1. Коробки перекладають по одній (тобто якщо треба перекласти 2, то вони змінюють порядок)
2. Коробки перекладають групами (порядок не змінюється)
Загалом, можна трохи скоротити, але це якраз той тип задач, який Rust ненавидить. Складні зміни всередині структури з перекиданням частин туди-сюди. Треба або unsafe робити, або купу проміжних змінних.
Majźe peven, śćo moźna bulo vydobyty infu z fajla kraśće i oxajnêśe, ale naj.
Śće z cêkavoho ćy smêśnoho navkolo <AoC>: xtosj pomêtyv v sobê virus, śćo krade kriptovalutu, bo skopijovanyj tekst zô zadaćy ne zbêhav sja zô vstavlenym.
Умова: знайти в стрічці першу підстрічку з 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. Для кожного дерева вводиться оцінка - добуток відстаней, на які можна подивитися з нього, до найближчого не нижчого дерева чи краю лісу. Знайти дерево з максимальною оцінкою.
Щось у другому з ітераторами перемутив, ну і біс із ним.