@ru_python

Страница 46 из 9768
Фԉùཎыч⚠️
23.12.2015
20:25:45
Henaro
23.12.2015
20:26:04
начинал-то с 3

потом упёрся пару раз в юникод и попробовал 2

понравилось, пока остался

Google
Artem
23.12.2015
20:30:21
и впрямь лол

@Kolyann про молекулы сложная задачка?

Kolyann
23.12.2015
20:44:48
вторая часть сложная

ну точнее как сложная, обход надо делать в ширину с отсечением, а я в глубину заебенил

но тоже с отсечением

но это тоже весьма дубовый алгоритм, как мне кажется

Henaro
23.12.2015
20:52:24
день 3, задача 1

мне порой кажется, что дубовые алгоритмы - моё призвание

# стартовые координаты x = y = 0 steps = {'^': {'y': 1}, 'v': {'y': -1}, '<': {'x': -1}, '>': {'x': 1}} houses = {'x0y0': 1} for k in open('data').readline(): locals()[steps[k].keys()[0]] += steps[k].values()[0] key = 'x%dy%d' % (x, y) houses[key] = houses.get(key, 0) + 1 print len(houses.values())

Artem
23.12.2015
20:55:37
с локалс очень сложный прекол

Henaro
23.12.2015
20:55:42
люди добрые, я совсем наркоман или есть таки более элегантное решение?

с локалс очень сложный прекол
мне показалось, что можно упростить нагородив кучу if'ов

Kolyann
23.12.2015
20:57:09
я своё не скопирую, на работе осталось

Google
Artem
23.12.2015
20:57:16
у меня вот так получилось: def deliver_presents(instructions): commands = {'^': (0, -1), 'v': (0, 1), '>': (1, 0), '<': (-1, 0)} visited = {(0, 0): True} x, y = 0, 0 for i in instructions: dx, dy = commands[i] x += dx y += dy visited[(x, y)] = True return len(visited)

Kolyann
23.12.2015
20:57:18
но я решал через дикт

вот да, именно так

Henaro
23.12.2015
20:57:31
а хотя бы в 45 словах кратко алкогоритм не помнишь?

Artem
23.12.2015
20:58:10
что-то с молекулой тяжко уже

Kolyann
23.12.2015
20:58:13
я ещё сегодня узнал о существовании defaultdict

с ним бы санта поддался еще быстрее :D

Artem
23.12.2015
20:58:47
да, можно сделать defaultdict(int) и сразу туда плюсовать подарки

Kolyann
23.12.2015
20:58:51
если вкратце алгоритм гуляющего санты

считаешь новую координату исходя из команды

commands = {'^': (0, -1), 'v': (0, 1), '>': (1, 0), '<': (-1, 0)}

увеличиваешь словарь этой координаты на 1

ответ - размер словаря

Henaro
23.12.2015
21:00:03
ну т.е. по сути алгоритм верно составил, реализовал только слегка упорото

Artem
23.12.2015
21:00:10
а вот совсем питоник решение: def visited_houses(instructions): x = y = 0 visited = {(x, y)} for c in instructions: if c == '^': y += 1 elif c == 'v': y -= 1 elif c == '>': x += 1 elif c == '<': x -= 1 visited.add((x, y)) return visited

Kolyann
23.12.2015
21:00:51
а на тему молекул

мне очень помог re.finditer

`qwe zxc `

как ты так аккуратно вставляешь код?

...

Google
Henaro
23.12.2015
21:02:41
три апострофа сверху код три апострофа снизу

Kolyann
23.12.2015
21:02:49
ОГОГО

Henaro
23.12.2015
21:03:02
как в пистоне многострочка

Kolyann
23.12.2015
21:03:06
я съел собаку

вау :D

спасибо

Henaro
23.12.2015
21:03:35
странно, что нигде не нашёл упоминаний про такие ньюансы

про скайповые теги много написано, а про телеграф глухо

Artem
23.12.2015
21:04:04
в чейнджлоге упоминалось

Henaro
23.12.2015
21:04:21
вона чё

Kolyann
23.12.2015
21:04:38
по поводу молекул for rep in replacements for start_index in map(start,iterfind(string,repl)) подставить, записать в дикт

как-то так

а вот вторая часть там ВНЕЗАПНО гораздо хардкорнее

у тебя есть изначальная строка ABCDEFAB и всё те же замены, нужно узнать, за сколько минимум ходов можно из базисного элемента e получить эту строку

и замены вида e -> A; ABC -> F; AB -> D; e -> AB

как-то так, в результате я нашёл 2 варианта, либо из базисной молекулы генерить пути, но я его по-моему даже писать не начал, т.к. это экспонента

второй - сворачивать куски длинной молекулы, причём если у меня при свёртке получилась базисная молекула e в цепи, то эту ветвь отбрасывать, т.к. базисная молекула является отправной точкой и не может быть получена

Artem
23.12.2015
21:11:26
я ещё сегодня узнал о существовании defaultdict
если скрестить с лямбдами смотри что будет: tree = lambda: defaultdict(tree)

можно ассайнить сразу до пятого колена

Kolyann
23.12.2015
21:12:58
мне бы вместо скрещивания дефолт-дикта мапы лямбды листа лямбд редьюса дикта лучше научиться не городить костыли и читать документацию

Google
Artem
23.12.2015
21:13:29
t = tree() t['a']['b']['c'] = 1

типа такого применение

Kolyann
23.12.2015
21:14:49
ЛОЛ

и это запилит {'a':{'b':{'c':1}}}?

Artem
23.12.2015
21:15:36
ага

Kolyann
23.12.2015
21:16:24
божественно

Henaro
23.12.2015
21:29:24
3_2 про робосанту там какой-то ад

Artem
23.12.2015
21:30:34
да легко, там всего-то нужен слайс

либо % 2

Henaro
23.12.2015
21:31:32
санта и сантабот по очереди ходят что-ли?

Artem
23.12.2015
21:31:36
да

Henaro
23.12.2015
21:31:43
отоночо

понял, спасибо

координаты те же можно использовать в принципе

сначала считаем чётные, потом нечётные ходы

Artem
23.12.2015
21:49:21
ох, что-то проиграл я с брутфорсом на 20 дне

даже прогрессбар прикрутил, и он меня не порадовал

Elena
23.12.2015
22:13:08
У меня в университете белочка умерла?

Nikita
23.12.2015
22:14:23
?

это кличка?

Google
Nikita
23.12.2015
22:14:37
или животное настоящее

Elena
23.12.2015
22:15:27
У нас парк на территории кампуса. Там белки живут. Сегодня возле первого корпуса одну мёртвую нашли?

А утром мужик какой-то умер в парке.

Блин, жалко белку(

Kolyann
23.12.2015
22:23:06
хуй с ним, с мужиком

на тему 20

Elena
23.12.2015
22:23:36
Та 100% бомж какой-то

Kolyann
23.12.2015
22:23:39
возможно, там есть какое-то нормальное математическое решение

Elena
23.12.2015
22:23:46
А вот бедная девочка(

Белочка

Artem
23.12.2015
22:23:58
там numpy похоже надо юзать

Elena
23.12.2015
22:24:13
Аж плакать хочется(

Kolyann
23.12.2015
22:24:18
ну и плюс можно брутить не каждый шаг, а логарифмически

сначала удваивать, потом, когда сумма будет больше задания, уменьшать

при этом можно запоминать просчитанные дома и считать уже не с первого, а с энного

т.е. 1 дом - 10 подарков 2 - 30 4 - 70 8 - 150 16 - 320 32 - 800 или что-то в таком духе

если правая часть растёт по экспоненте двойки, то получится что-то в районе 2^25

т.е. всего 25 шагов для достижения максимума

Artem
23.12.2015
22:27:35
да, не запоминая будет слишком долго считать

Kolyann
23.12.2015
22:28:01
потом ещё шагов максимум 12 для точного подсчёта

Artem
23.12.2015
22:28:20
в нампи можно сделать так и зафигачить подарки сразу во все дома, которые посетит эльф presents[elf::elf] += elf * 10

Страница 46 из 9768