
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
так я о том же

Проксимов
13.04.2017
06:27:43

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
в общем, это вопрос одного символа в регулярке

shadowjack
13.04.2017
06:39:39

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

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

Donaudampf
13.04.2017
06:57:41

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

Yahweh
13.04.2017
06:58:33

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

Google

Donaudampf
13.04.2017
06:59:37
то есть есть объект 1, и на него все ссылаются
а то что больше 255 - уже создаются отдельные объекты каждый раз
вот примерно так

Проксимов
13.04.2017
07:00:16

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 одинаковые
в общем, не соскучишься