Re: Advent of Code
Мені пам'яті не вистачає на третій вкладений цикл. Власної, не комп'ютерної. А тут усе тупо моделюється, як в умові написано, думати не треба.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Алгоритми та структури даних, технології → Advent of Code
Сторінки Попередня 1 2 3 4 … 8 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
Мені пам'яті не вистачає на третій вкладений цикл. Власної, не комп'ютерної. А тут усе тупо моделюється, як в умові написано, думати не треба.
А оце я щось розійшовся. І Rust не допоміг
Працює, звісно, але шукав тупу помилку дуже довго.
Спершу хотів погратися з інтервалами, потім вирішив, що 1000х1000 - не надто велике поле.
Ja vzahalji obijcov sja bez matritsjy, tupo tcerez spyskiv koordynat, qeq. Ja navitj tcomusj, nespodjivano dlja sebe, zadovolenyj svojym rezultatom — vse vidnosno lehko tcytaljno, bez gaxlyvyx perenasytcenj dugok (jakctco propustyty movu pro efektivnistj).
Модифікував
Відсотків на 10 повільніше за попереднє (0.18c проти 0.16c)
Друге рішення - 25мс, перше - 4мс (у релізі, звісно, дебажні - 0,5с на 0,25с).
І так, на жаль, bench досі доступний лише на нестабільній гілці.
Модифікував
▼2021/5a.pyВідсотків на 10 повільніше за попереднє (0.18c проти 0.16c)
Treba quote zaminyty na code
І так, на жаль, bench досі доступний лише на нестабільній гілці.
Ja protupyv dekiljka sekund: nabrav «Rudy…» zamistj «Ruby bench» i menji pokazuvalo lavotcky.
День 5. 1. Є цілочисельні координати відрізків прямих: горизонтальних, вертикальних і діагональних під 45°. Треба знайти кількість цілочисельних точок перетину чи накладання цих відрізків, крім діагональних. 2. І діагональних теж.
День 6. 1. Є популяція риб. Кожна риба народжує кожні 7 днів, крім новонароджених, які народжують на 9-й день. Є початковий стан (вік/час до народження) риб, обчислити кількість риб за 80 днів. 2. За 256 днів.
Тут щось фібоначчіподібне, але надто просто симулюється і початковий стан дещо все плутає, тому без специфічних формул.
Ex, tcerez druhu zadatcu musyv pererobjaty, v pidsumku otrymav duge korotku proqu, bo tut tupo zsuv masyva z dekotrymy vidminostjamy.
Pro vsjak, ja znaju, ge mnogyna do fish je fish.
О, за що я люблю Пайтон - це за можливість дуже коротко записати купу операцій.
Ваш код взагалі 9 разів відкриває файл, читає і парсить з нього стрічку, причому два останніх - гарантовано з результатом 0
Але в один рядок.
Ваш код взагалі 9 разів відкриває файл, читає і парсить з нього стрічку, причому два останніх - гарантовано з результатом 0
Slucno, prytomnjice bulo by vynesty, np:
data = list(map(int, open("input.txt").read().split(",")))
fishes = [data.count(i) for i in range(9)]
Ale podurkuvaty zarady odnoji stritcky — beztsjino, .
День 7. 1. Є масив чисел, треба знайти таке, сума відстаней від якого до кожного іншого буде мінімальною, і повернути цю суму відстаней. 2. Те саме, але функція відстані між числами a та b - |a-b|*(|a-b|+1)/2.
Перше завдання - це просто медіана. Я так і зробив спершу. А от друге - треба трохи з математикою пововтузитися, там має бути розв'язок через похідні і бісекцію, але мені ліньки, тому досить тупо шукаю бісекцію з додатковими перевірками сусідів (фактично за градієнтом). Для загальності перше теж переробив.
UPD: трохи прибрав код в task
Tupo brutfors, kompjuternoji mitsjy vystatcylo: aby zrobyty i aby potcekaty v megax 2~3 sek.
Ну тоді вже
- two[-1] += sum(range(1, abs(f - t) + 1))
+ two[-1] += (abs(f - t)*(abs(f - t) + 1)//2