@ru_python

Страница 2672 из 9768
Donaudampf
12.04.2017
22:55:33
ну да, пока я регэксы вспоминал, уже что-то похожее придумали)

Artem
13.04.2017
01:19:57
хорошая статья про рейт лимитинг https://medium.com/figma-design/an-alternative-approach-to-rate-limiting-f8a06cf7c94c

Артем
13.04.2017
02:53:36
Всем привет, подскажите какой лучше фреймворк использовать для написания rest api

Artem
13.04.2017
02:54:55
hug.rest

Google
Nardis
13.04.2017
03:15:38
Питонисы, есть, кто не спит и хотя бы базово разбирается в графовых алгоритмах?

Вопрос в следующем: является ли алгоритм IDDFS (итеративно углубляющийся поиск вширь графа) наиболее оптимальным для решения задачи поиска всех нод не глубже четырех граней? Задача целиком:



Я понимаю, графовые алгоритмы с утра — это ту мач, согласен. Но вопрос не от хорошей жизни!

Andjelx
13.04.2017
05:32:42
?разве что добавить if not source_line: return ""

Vasiliy
13.04.2017
06:04:37
Для всех нод, как в задаче, лучше на матричном представлении работать

Алгоритм флойда кмк

Ограниченный 4 шагами

Aragaer
13.04.2017
06:09:05
взять матрицу инцендентности и на ее основе запилить матрицу расстояний

shadowjack
13.04.2017
06:19:09
А вообще задача называется RLE, run length encoding и если загуглить по этому термину можно найти миллион решений.

Donaudampf
13.04.2017
06:22:25
да там потом уже нормально через регулярки переделали в пару строк

Google
shadowjack
13.04.2017
06:23:00
Ничего не нормально.

На пустых строках работает?

Donaudampf
13.04.2017
06:24:37
работает

хотя там не определено, что в таком случае возвращать

мой вариант вроде просто пустую строку возвращает

shadowjack
13.04.2017
06:25:46
Я про решение на регулярках

Donaudampf
13.04.2017
06:25:58
ну я о нём и говорю

def compress(s): def count(match): s = match.group(0) return f"{s[0]}{len(s)}" return re.sub(r'(.)\1*', count, s)

до этого было похожее, но там страшный однострочник

Проксимов
13.04.2017
06:27:20
>>> re.sub(r"(\w)(\1+)", lambda x:'%s%d' % (x.group(1), len(x.group(2))+1), 'aaaabbbbccd') 'a4b4c2d'

shadowjack
13.04.2017
06:27:25
Количество строк вообще не решает. Решает читабельность.

Donaudampf
13.04.2017
06:27:42
так я о том же

Donaudampf
13.04.2017
06:27:47
фу такое писать

или вот это - читабельно?

shadowjack
13.04.2017
06:29:21
Это это что?

Donaudampf
13.04.2017
06:29:39
>>> re.sub(r"(\w)(\1+)", lambda x:'%s%d' % (x.group(1), len(x.group(2))+1), 'aaaabbbbccd') 'a4b4c2d'

Artem
13.04.2017
06:29:58
Норм ж

Donaudampf
13.04.2017
06:31:19
это не норм, это "смотрите как я умею в одну строчку"

shadowjack
13.04.2017
06:35:10
Мне кажется в однострочном решении ошибка.

Google
shadowjack
13.04.2017
06:35:44
Ой, хотя хз.

Нужно на условие смотреть.

Donaudampf
13.04.2017
06:36:47
ну регулярки - это такое

на любителя

для одного символа цифру не ставит

Aragaer
13.04.2017
06:38:47
def f(s): if not f: return "" p, n = f[0], 1 r = "" for c in f[1:]+"-": if p == c: n+=1 else: r+=p if n > 1: r+=str(n) p, n = c, 1 return r

Donaudampf
13.04.2017
06:38:52
надо (\1*) вместо (\1+)

shadowjack
13.04.2017
06:38:54
Там автор не может определиться будет "abc" -> "abc" или "a1b1c1"

Aragaer
13.04.2017
06:38:57
а должен ставить цифру 1?

Donaudampf
13.04.2017
06:39:14
ну вроде где-то ближе к началу были примеры с 1

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

Aragaer
13.04.2017
06:40:00
во-от. А дальше мое решение можно переписать уже через пару p, n, лямбду и reduce

shadowjack
13.04.2017
06:40:45
Через reduce перепишите

Donaudampf
13.04.2017
06:41:43
ну и про сложение строк в циклах выше уже тоже писали

Aragaer
13.04.2017
06:47:57
>>> def f(state, ch): ... if ch == state[1]: ... return state[0], state[1], state[2]+1 ... else: ... return state[0]+state[1]+str(state[2]), ch, 1 ... >>> def f2(s): ... return reduce(f, s[1:]+'-', ("", s[0], 1))[0] ... >>> f2("aaaabbbbccd") 'a4b4c2d1'

наверно 8)

тут надо добавить проверку на пустую строку, но так .. ну более-менее

Google
Aragaer
13.04.2017
06:49:00
если сложение строк это "ахренеть как медленно, у меня строки по 100500 символов", то список, прибавлять впереди, потом реверснуть

shadowjack
13.04.2017
06:50:44
Прибавлять спереди медленно в питоне

Donaudampf
13.04.2017
06:50:53
ну если это задание с какого-нибудь хакерранка, то вполне реально может по памяти не пройти)

shadowjack
13.04.2017
06:51:01
.append быстро

Nardis
13.04.2017
06:52:03
Admin
ERROR: S client not available

shadowjack
13.04.2017
06:52:19
Ну и желатьно без добавления терминирующего символа

Черный
13.04.2017
06:52:22


Donaudampf
13.04.2017
06:52:53
потому что не надо делать мутабельные дефолтные параметры в функциях

они инициализируются один раз

декораторы тоже весело работают в "import-time"

Черный
13.04.2017
06:53:27
Ну да, но откуда там [0, 1] взялся в третий раз?

Yahweh
13.04.2017
06:54:23
А ещё интересно работает: t = (1, 2, [3, 4]); t[2] += [5, 6] тоже надо остерегаться

Donaudampf
13.04.2017
06:54:39
Ну да, но откуда там [0, 1] взялся в третий раз?
потому что после первого вызова осталось

Aragaer
13.04.2017
06:56:19
/me написал на С с использованием goto и прям аж прецца

Donaudampf
13.04.2017
06:57:41
А ещё интересно работает: t = (1, 2, [3, 4]); t[2] += [5, 6] тоже надо остерегаться
в питоне вообще с объектами весело a = 2 b = 2 id(a) == id(b) c = 300 d = 300 id(c) == id(d)

Aragaer
13.04.2017
06:57:45
... а теперь убрал goto, потому что и без него ок

Donaudampf
13.04.2017
06:58:40
сейчас точно не найду, но вроде то, что в byte, 0..255 - создаётся как отдельные объекты в памяти

Google
Donaudampf
13.04.2017
06:59:37
то есть есть объект 1, и на него все ссылаются

а то что больше 255 - уже создаются отдельные объекты каждый раз

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

Donaudampf
13.04.2017
07:00:35
Эмм, это норма
ну это специфика

такая не очень очевидная

вот как выше с мутабельным дефолтом

Yahweh
13.04.2017
07:01:05
In [6]: a = 256; b = 256 In [7]: id(a), id(b) Out[7]: (140318778361472, 140318778361472)

Donaudampf
13.04.2017
07:01:14
легко наколоться

это надо доки читать

Проксимов
13.04.2017
07:02:26
Лел

В Chrome появится режим работы без экрана http://www.opennet.ru/opennews/art.shtml?num=46371 В Chrome 59 планируют добавить режим работы без вывода на экран (headless), который позволит запускать браузер на системах без монитора и графической подсистемы, например, на серверах. Режим будет активироваться через запуск с опцией "--headless". В качестве одной из областей применения называется возможность автоматизированной обработки страниц с использованием полноценной платформы Chromium, например, можно загрузить страницу, извлечь нужные элементы DOM и сохранить результат в виде картинки (или PDF). Для управления предлагается использовать протокол удалённой отладки (RemoteDebug). #opennet

Yahweh
13.04.2017
07:02:28
Donaudampf
13.04.2017
07:03:46
и до -5 :D

в смысле, до -5 одинаковые

в общем, не соскучишься

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