Size: a a a

2020 May 25

A(

Andrey (@AndrewB330) in pro.algorithms
 ‌‌Gleb Pilipets
Ребят, а можно задать вопрос по регулярным выражениям?
r'\s+?' vs r'\s'
Как бы первое lazy, тогда в чём разница?
Я глянул на примерах на regexr.com и количество совпадений то же...
Но до этого видел первое выражение в реализации парсеров на одном из репозиториев и возник вопрос, зачем так делать?
а там где ты встречал первое выражение, там это весь регексп был?
источник

A(

Andrey (@AndrewB330) in pro.algorithms
ну похоже что они одинаковые иначе, если в регекспе больше ничего нет
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
SQL_REGEX = {
   'root': [
       (r'(--|# )\+.*?(\r\n|\r|\n|$)', tokens.Comment.Single.Hint),
       (r'/\*\+[\s\S]*?\*/', tokens.Comment.Multiline.Hint),

       (r'(--|# ).*?(\r\n|\r|\n|$)', tokens.Comment.Single),
       (r'/\*[\s\S]*?\*/', tokens.Comment.Multiline),

       (r'(\r\n|\r|\n)', tokens.Newline),
       (r'\s+?', tokens.Whitespace),
источник

A(

Andrey (@AndrewB330) in pro.algorithms
мб только производительность(?) но я не претендую на мастерство в знании того как оптимизируются регекспы внутри, может первый и так же быстро будет работать
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
Andrey (@AndrewB330)
мб только производительность(?) но я не претендую на мастерство в знании того как оптимизируются регекспы внутри, может первый и так же быстро будет работать
ОО, это возможно. Я проверил на маленьком примере, и оно действительно быстрее
источник

A(

Andrey (@AndrewB330) in pro.algorithms
ну по логике первое делает явно больше операций
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
хотя могу ошибаться. Ладно, спасибо
источник
2020 May 26

I

Ioann_V in pro.algorithms
Ребят, есть интересная задача. Есть множество строк. Хочется узнать, как много в процентах, мы встречаем всевозможные разные подстроки встречающиеся в той или иной строке, в этих строках.
источник

I

Ioann_V in pro.algorithms
Я так понимаю, копать в сторону суфф. автомата?
источник

I

Ioann_V in pro.algorithms
То есть, можно свести задачу к:
Дана строка, сколько раз в ней встречаются разные её подстроки.
источник

I

Ioann_V in pro.algorithms
Мы ведь можем соединить исходное множество строк, и получить одну мегастроку
источник

MB

Mikail Bagishov in pro.algorithms
Ну по сути, мы хотим для каждого суффикса понять, какой максимальный префикс встречается в строках левее или правее.
источник

MB

Mikail Bagishov in pro.algorithms
Тогда предлагаю сначала посчитать самый длинный префикс, который встречался в строках слева.
Потом то же самое - справа.
источник

I

Ioann_V in pro.algorithms
Для каждого суффикса?
источник

MB

Mikail Bagishov in pro.algorithms
И то и то предлагаю считать с помощью построения суфавтомата на наборе строк.
источник

MB

Mikail Bagishov in pro.algorithms
Ioann_V
Для каждого суффикса?
Ну, по аналогии с алгоритмом поиска подстроки в строке с помощью суфавтомата.
Где мы строим СА на паттерне, потом по одному скармливаем ему символы строки и поддерживаем текущую вершину
источник

I

Ioann_V in pro.algorithms
Так, подумаю. То есть, сложность в итоге MN log MN?
источник

MB

Mikail Bagishov in pro.algorithms
Ioann_V
Так, подумаю. То есть, сложность в итоге MN log MN?
А разве не чистая линия?
источник

I

Ioann_V in pro.algorithms
Ну, может и линия. Сейчас подумаю.
// Не крутой олимпиадник.
источник

MB

Mikail Bagishov in pro.algorithms
мб я где-то вру (особенно с учетом текущего времени), но вроде это должно работать :)
источник