Evgeniy
Но можно оптимизировать какие доски проверять и какие строки/столбцы
Во второй части можно пропускать уже выигравшие доски
Evgeniy
Я обычным двумерным массивом доски хранил
Иван
Alex Azarov
Evgeniy
😁
Aleksandr
по итогу показалось что дольше из инпута в массивы переводил числа, чем алгоритм писал
Viktor
У меня, если честно, получилось полотно кода, для 4 дня.
Viktor
то есть само решение вроде норм, компактное, но реализация всех функций — там полотно.
Viktor
печаль
Viktor
скоро на полный рабочий день придётся решать адвент 😂
Captcha bot
Ryan Bogaerts, код неверный, обратись к админу.
Captcha bot
Stijn Vermeiren, код неверный, обратись к админу.
Evgeniy
Я хранил одномерным
Тоже вариант. Так даже проще проверять выиграла доска или нет.
Lynn «Кофеман»
А я хранил каждую строчку и столбец в отдельном Set. 😀
Lynn «Кофеман»
Тогда проверка выигрыша тривиальна — пустой set 😀
Evgeniy
Ага, так будет быстрее.
Lynn «Кофеман»
Но в целом я не очень заморачивался на оптимизации 😀
Ilia
я как увидел инпут так тоже решил забить на оптимизацию, думал через две хэшмапы делать, а тут все проще
Evgeniy
https://www.youtube.com/watch?v=JbYS3_zXN_A
Ilia
я чет во второй части сегодня дико затупил с одним условие и полчаса дебажил в итоге :D
Evgeniy
я чет во второй части сегодня дико затупил с одним условие и полчаса дебажил в итоге :D
С условием, что выигравшую доску повторно учитывать уже не нужно?
Ilia
С условием, что выигравшую доску повторно учитывать уже не нужно?
Не, у меня был косяк и я лишние доски добавлял )) вот тут затык получился, а валидировал я проверку на выигрышные доски тупо через сет сделал
Ilia
в одном чатике подсмотрел идею решения второй задачи за два прохода по доскам. это даже немного гениально вышло, написал: получил ±1.4ms против первого решения в 17-20ms
Ilia
для каждой доски надо найти ход, на котором она выиграет, ну а дальше дело техники )
V
пока вы тут уже 4-й день решили, я радуюсь, что написал довольно элегантное решение на го вчерашнего дня ) https://github.com/1e9y/adventofcode/blob/main/2021/day03/day03.go#L70-L88
Alex Azarov
А я начал прошлые года решать🙃
Ilia
А я начал прошлые года решать🙃
Я после этого хочу начать решать прошлые )
Ilia
Интересно. А потом берем доску с максимальным ходом.
Получается да, за линию получаем любую доску, минимальную/максимальную, дальше вычёркиваем просто в ней ходы и все )
V
давайте потом с 15-го начнем
V
там есть задачка на майнинг криптовалюты)
Ilia
давайте потом с 15-го начнем
Я не против, будет даже интересно )
Alex Azarov
Дядя Боб уже не тот…
Ilia
Дядя Боб уже не тот…
Емнип на 87 ходе заканчивается вторая часть
Sergei
Проснулся, прочитал условие, ничего не понял, позавтракал, прочитал, понял, пойду погуляю, пусть фоном процессится)
Andrey
Я вроде в фоне подумал и кажется, что не слишком сложно. Осталось написать и ужаснуться второй части
Ilia
Условия кривые
Ilia
Написано, что точки в формате x,y, а на доске нарисовано в формате y,x
Andrey
Вчера я сходу написал решение для первой, а во второй оказалось, что совпадения по колонкам тоже надо проверять :/
Ilia
Первая часть по идее лёгкая, я в тексте подсказку рассмотрел )
Ilia
а со второй я с кривыми условиями разобраться не могу, ответ не принимает блин))
Alexandr
этот advent я решаю на питоне и это такое облегчение после JS, просто пишешь логику без миллиарда вспомогательных функций) а какое кривое условие во втором? вроде просто по диагонали посчитать?
Ilia
Написано, что точки в формате x,y, а на доске нарисовано в формате y,x
Ilia
и у меня с этим чет затык какой-то, в голове не могу уложить
Alexandr
так вроде когда распарсил, типо p1, p2 = l.split(' -> ') x1, y1 = map(int, p1.split(',')) x2, y2 = map(int, p2.split(',')) то уже всё равно, в названиях переменных есть x, y
Ilia
так вроде когда распарсил, типо p1, p2 = l.split(' -> ') x1, y1 = map(int, p1.split(',')) x2, y2 = map(int, p2.split(',')) то уже всё равно, в названиях переменных есть x, y
я с диагоналями и направлениями закопался и не мог понять почему не работает, написал другое условие через дельту и сработало )
Ilia
переписал вообще полностью все решение через дельту, вышло 4 строки(плюс хэлпер). так даже не интересно))
Ilia
я такие задачи любил в прошлом году, когда по сути решение можно написать одно и то же, разница будет в каком-нибудь одном условии, а то и вообще можно сразу написать решение второй задачи и оно сработает сразу и там и там )
Aleksandr
Чатик, можно немного оффтопа от алгосиков. Кто нибудь может чего посоветовать, если у меня есть скрипт, который посылает пару http запросов и получает ответ, который надо сохранить, и я хочу чтобы этот скрипт разок в час запускался. Что для такого сервиса нужно? Нужно покупать виртуалку в клауде и крон джобу там устанавливать? Или чего есть попроще? Аля gh pages только чуть помощнее:) заранее спасибо за любые советы!
Ilia
А где эти данные сохранять хочется?
Ilia
По сути этот скрипт хоть в браузере можно запустить ))
Aleksandr
А где эти данные сохранять хочется?
Да там в целом тупо файлика хватит :)
Aleksandr
По сути этот скрипт хоть в браузере можно запустить ))
Это да, но мне хочется постоянно чтобы он сам запускался
Ilia
Это да, но мне хочется постоянно чтобы он сам запускался
Ну вот я про это и говорю, сам будет запускаться
Aleksandr
Ну вот я про это и говорю, сам будет запускаться
Мммм, неочень понимаю - ожидается что это будет на моей машине запускаться в браузере? Но это мне не подойдет, она же не будет постоянно включена
Sergei
Опять в одномерный засунул диаграмму, мне почему-то это так нравится, получать индекс через x * width + y
Sergei
Правда то, что координаты не отсортированы и первая координата может быть больше, чем вторая добавило простыню условий)
Ilia
Я тупо в сет ‘x-y’ запихнул и все
Sergei
Так там до 1000 значения
Ilia
Так там до 1000 значения
Я к тому, что это заведомо знать условия, которые не описаны )
V
Но это тогда покупать у них сервис, да.
на лямбы у них есть free tier на миллион запросов в месяц
Alex Azarov
https://adventofcode.com/2015/day/4 Давайте кто быстрее намайнит биткоинов)
Alex Azarov
для второй задачи у меня на одном потоке: 44.61s на нескольких: 74.29s
Alex Azarov
Alex Azarov
а, /usr/bin/time оказывается суммирует время на всех потоках, поэтому мультитредовая имплементация всё-таки быстрее – 10 секунд
Alex Azarov
соптимизировал до 1 секунды
Alex Azarov
из них 426мс работа dlyd, плюс у меня всё ещё строки создаются где не надо, так что думаю на сишке можно в 100мс вложиться