Size: a a a

2019 November 18

АУ

Алексей Ушаков... in RubyRush
R M
регулярное выражение
https://regex101.com/
Я обычно тут смотрю что значит та или иная шутка в регулярке
источник

RM

R M in RubyRush
все я туплю.
источник

RM

R M in RubyRush
Эдем
Это просто минус, точнее дефис
да спасибо большое
источник

N

Ni in RubyRush
Эдем
По хардкору 😱

Проще через scan

str.scan(/\w\s\w/)
можно, конечно, но я не сторонник регулярок. было похожее задание один раз, я реализовал на регулярках (потому что просто), но правильным подходом было как раз-таки пройтись по строке, потому что регулярки — медленные, и строку в 40 гигабайт они будут разбирать очень долго
источник

N

Ni in RubyRush
да и было на самом деле интересно, смогут ли руби в одну строку данную задачу решить
источник

Э

Эдем in RubyRush
Ni
можно, конечно, но я не сторонник регулярок. было похожее задание один раз, я реализовал на регулярках (потому что просто), но правильным подходом было как раз-таки пройтись по строке, потому что регулярки — медленные, и строку в 40 гигабайт они будут разбирать очень долго
Мм, прям совсеееем не соглашусь. Спорить не буду, просто покажу:

require 'benchmark/ips'

str = 'a' + ' a' * 1_000_000

Benchmark.ips do |x|
 x.report('Edem') { str.scan(/\w\s\w/) }
 x.report('Ni') { str.split.each_slice(2).to_a.map { |el| el.insert(1, ' '); el.join } }
 x.compare!
end
источник

Э

Эдем in RubyRush
Comparison:
     Edem:        7.7 i/s
       Ni:        1.1 i/s - 7.06x  slower
источник

N

Ni in RubyRush
Эдем
Мм, прям совсеееем не соглашусь. Спорить не буду, просто покажу:

require 'benchmark/ips'

str = 'a' + ' a' * 1_000_000

Benchmark.ips do |x|
 x.report('Edem') { str.scan(/\w\s\w/) }
 x.report('Ni') { str.split.each_slice(2).to_a.map { |el| el.insert(1, ' '); el.join } }
 x.compare!
end
этот файл двух мегабайт не весит даже, поэтому регуляргки тут на изи читают. попробуйте увеличить файл до размеров с несколько десятков гигабайт, а мой метод заменить на простейший цикл, что предложили выше (потому что у меня слишком много действий). в таких условиях регулярки могут подвести
источник

Э

Эдем in RubyRush
Такой хардкор везде будет долго работать
источник

N

Ni in RubyRush
Эдем
Такой хардкор везде будет долго работать
ну нужно же как-то грепать данные из больших тестовых файлов
источник

N

Ni in RubyRush
из логов, например
источник

Э

Эдем in RubyRush
Развлекались по зиме на SO замерами скорости:

https://stackoverflow.com/a/54569041

Чтоб написать хороший скрипт, чтоб обогнать регулярки, нужно очень постараться
источник

N

Ni in RubyRush
Эдем
Развлекались по зиме на SO замерами скорости:

https://stackoverflow.com/a/54569041

Чтоб написать хороший скрипт, чтоб обогнать регулярки, нужно очень постараться
это очень простое задание, когда нужно 4 конкретных буквы вынести. в этом задании тоже простая регулярка. но бывают случаи, когда нужно использовать 'прожорливые' значения вроде .*, и размер текста в них составляет больше тысячи слов. иногда в олимпиадных задачах специально ставят временные ограничения с прожорливыми регулярками, что программа не успевает выполниться за указанный срок, а это минус баллы и тд. так что все зависит от задачи и от объема данных
источник

RM

R M in RubyRush
each_slice метод только с массивами работает?
источник

N

Ni in RubyRush
R M
each_slice метод только с массивами работает?
c Range тоже
источник

RM

R M in RubyRush
Ni
c Range тоже
я боялся этого))))))))
источник

RM

R M in RubyRush
он делает из ренжа массмвы вложенные?
источник

RM

R M in RubyRush
массив*
источник

N

Ni in RubyRush
R M
он делает из ренжа массмвы вложенные?
источник

RM

R M in RubyRush
а тогда чем отличается от map?
источник