Упражнения по регекспам
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 10.01.14 21:16
Оценка: 63 (8)
http://regex.alf.nu/
С уважением, Artem Korneev.
Re: Упражнения по регекспам
От: Буравчик Россия  
Дата: 11.01.14 20:41
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>http://regex.alf.nu/


ИТОГО:

Plain strings (207)
Anchors (208)
Ranges (202)
Backrefs (200)
Abba (167)
A man, a plan (176)
Prime (228)
Four (194)
Order (198)
Triples (567)
Glob (379)
Balance (286)
Powers (71)
Long count (217)
Long count v2 (212)
Alphabetical (256) — 1 ложное срабатывание

Score 3768

Если все делать правильно (без "хаков", т.е. без ложных срабатываний в правом списке), то в задаче Alphabetical зарабатывается очков 252. Поэтому в "классической лиге" (по терминологии авторов) удалось заработать бы 3764 очка (на 4 меньше).
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 17>>
Best regards, Буравчик
Re[2]: Упражнения по регекспам
От: _DAle_ Беларусь  
Дата: 12.01.14 00:22
Оценка: +1
Здравствуйте, Буравчик, Вы писали:

У меня получилось:
Plain strings (207)
Anchors (208)
Ranges (202)
Backrefs (201)
Abba (193)
A man, a plan (176)
Prime (257)
Four (194)
Order (198)
Triples (568)
Glob (379)
Balance (279)
Powers (80)
Long count (252)
Long count v2 (241)
Alphabetical (264)
Score 3899

Только вот жаль некоторые уровни, где нормальные идеи, учитывающие структуру задания, проигрывают по длине "читерским" решениям.
Re[3]: Упражнения по регекспам
От: B7_Ruslan  
Дата: 12.01.14 17:46
Оценка:
как решаются prime и abba?
abba я смог решить только на -230 очков, т.е. с точностью наоборот.
Re[4]: Упражнения по регекспам
От: _DAle_ Беларусь  
Дата: 12.01.14 21:33
Оценка:
Здравствуйте, B7_Ruslan, Вы писали:

B_R>как решаются prime и abba?

B_R>abba я смог решить только на -230 очков, т.е. с точностью наоборот.

И там и там у меня есть negative lookahead
  Мои варианты
abba ^(?!.*(.)(.)\2\1)
prime ^xx(x|xxx)?$|^(?!((xx)+$|(xxx)+$)|(x{5})+$)
Re[5]: Упражнения по регекспам
От: mikeh http://dilbertru.blogspot.com/
Дата: 13.01.14 09:07
Оценка: 21 (2)
Здравствуйте, _DAle_, Вы писали:

  Prime (283)
^(?!(xx+)\1+$)x+$
Re[6]: Упражнения по регекспам
От: _DAle_ Беларусь  
Дата: 13.01.14 17:10
Оценка:
Здравствуйте, mikeh, Вы писали:

M>Здравствуйте, _DAle_, Вы писали:


Круто, я вот что-то не докрутил до общего решения. Кстати, 3 последних символа можно смело убрать
Re[2]: Упражнения по регекспам
От: Were  
Дата: 13.01.14 18:34
Оценка:
Здравствуйте, Буравчик, Вы писали:

У меня с читами так получилось пока. Хотя там многие заданий в общем виде принципиально нерешаемы.

Plain strings (207)
Anchors (208)
Ranges (202)
Backrefs (201)
Abba (193)
A man, a plan (176)
Prime (286)
Four (199)
Order (199)
Triples (576)
Glob (381)
Balance (287)
Powers (93)
Long count (251)
Long count v2 (243)
Alphabetical (263)

Score 3965
Re: Упражнения по регекспам
От: Spiceman  
Дата: 21.01.14 14:58
Оценка:

Блин, прокачал скиллы по регекспам. Но все равно не понимаю, чем отличаются разные движки. Вот объясните мне, как решать 13.Powers?
Я написал такое решение:

^(^x|\1\1)*x$

Оно работает на движке PCRE (PHP), но не работает на JavaScript. Проверял тут.
Это вообще возможно решить в общем виде?
Re[2]: Упражнения по регекспам
От: Кодт Россия  
Дата: 21.01.14 16:51
Оценка:
Здравствуйте, Spiceman, Вы писали:

S>Блин, прокачал скиллы по регекспам. Но все равно не понимаю, чем отличаются разные движки. Вот объясните мне, как решать 13.Powers?


Можно ведь и хакнуть: ^(x|xx|x{4}|x{8}|x{16})(|\1{7}|\1{63})$ покрывает степени от 0 до 12, даёт 71 очко.
http://files.rsdn.org/4783/catsmiley.gif Перекуём баги на фичи!
Re[3]: Упражнения по регекспам
От: Spiceman  
Дата: 21.01.14 18:07
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Можно ведь и хакнуть: ^(x|xx|x{4}|x{8}|x{16})(|\1{7}|\1{63})$ покрывает степени от 0 до 12, даёт 71 очко.


Это же не спортивно! Хотя тоже интересно. Но вот товарищ Were набрал 93. Значит его решение укладывается в 17 символов.
И объясните мне, значит ли это, что в Javascript я не могу использовать все возможности регулярных выражений? В частности рекурсивные ссылки. И может ли это зависеть от браузера?
Re[4]: Упражнения по регекспам
От: Кодт Россия  
Дата: 21.01.14 18:34
Оценка:
Здравствуйте, Spiceman, Вы писали:

S>Это же не спортивно! Хотя тоже интересно. Но вот товарищ Were набрал 93. Значит его решение укладывается в 17 символов.

S>И объясните мне, значит ли это, что в Javascript я не могу использовать все возможности регулярных выражений? В частности рекурсивные ссылки. И может ли это зависеть от браузера?

У меня получалось negative lookahead'ы делать, но опять же, не без неспортивности.
Например, простые числа проверил делимостью на 2, 3 и 5
(На рабочем компе осталось решение, дома что-то туплю, воспроизвести не могу)
http://files.rsdn.org/4783/catsmiley.gif Перекуём баги на фичи!
Re[4]: Упражнения по регекспам
От: Were  
Дата: 22.01.14 06:40
Оценка: 10 (2)
Здравствуйте, Spiceman, Вы писали:

К>>Можно ведь и хакнуть: ^(x|xx|x{4}|x{8}|x{16})(|\1{7}|\1{63})$ покрывает степени от 0 до 12, даёт 71 очко.


S>Это же не спортивно! Хотя тоже интересно. Но вот товарищ Were набрал 93. Значит его решение укладывается в 17 символов.

S>И объясните мне, значит ли это, что в Javascript я не могу использовать все возможности регулярных выражений? В частности рекурсивные ссылки. И может ли это зависеть от браузера?

Вот тут есть отличная таблица про что можно и что нельзя.

Кстати это задание у меня вполне честно решено в общем виде, с negative lookahead'ами.
Re[5]: Упражнения по регекспам
От: _DAle_ Беларусь  
Дата: 23.01.14 20:19
Оценка: 6 (1)
Здравствуйте, Were, Вы писали:

W>Здравствуйте, Spiceman, Вы писали:


К>>>Можно ведь и хакнуть: ^(x|xx|x{4}|x{8}|x{16})(|\1{7}|\1{63})$ покрывает степени от 0 до 12, даёт 71 очко.


S>>Это же не спортивно! Хотя тоже интересно. Но вот товарищ Were набрал 93. Значит его решение укладывается в 17 символов.

S>>И объясните мне, значит ли это, что в Javascript я не могу использовать все возможности регулярных выражений? В частности рекурсивные ссылки. И может ли это зависеть от браузера?

W>Вот тут есть отличная таблица про что можно и что нельзя.


W>Кстати это задание у меня вполне честно решено в общем виде, с negative lookahead'ами.


Я так понимаю, что вот так:
  Powers(93)
^(?!(x(xx)+)\1*$)
?
Re[6]: Упражнения по регекспам
От: Were  
Дата: 24.01.14 06:47
Оценка:
Здравствуйте, _DAle_, Вы писали:

W>>Кстати это задание у меня вполне честно решено в общем виде, с negative lookahead'ами.


_DA>Я так понимаю, что вот так:

Ага, так.
Re: 10. Triples
От: rg45 СССР  
Дата: 01.02.14 11:07
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>http://regex.alf.nu/


  10. Triples (475)
^[0369]*([147][0369]*([147][0369]*[258][0369]*)*([258]|[147][0369]*[147])[0369]*|[258][0369]*([258][0369]*[147][0369]*)*([147]|[258][0369]*[258])[0369]*)*$

Не покидает ощущение, что я чего-то не знаю или не догоняю. Неужели это и есть ожидаемое решение, неужели нельзя проще? Дайте подсказочку, пожалуйста.
--
Re[2]: 10. Triples
От: rg45 СССР  
Дата: 01.02.14 11:18
Оценка:
Здравствуйте, rg45, Вы писали:

AK>>http://regex.alf.nu/

  10. Triples (475)
^[0369]*([147][0369]*([147][0369]*[258][0369]*)*([258]|[147][0369]*[147])[0369]*|[258][0369]*([258][0369]*[147][0369]*)*([147]|[258][0369]*[258])[0369]*)*$

R>Не покидает ощущение, что я чего-то не знаю или не догоняю. Неужели это и есть ожидаемое решение, неужели нельзя проще? Дайте подсказочку, пожалуйста.


Удалось слегка упростить:
  10. Triples (480)
^[0369]*(([147][0369]*([147][0369]*[258][0369]*)*([258]|[147][0369]*[147])|[258][0369]*([258][0369]*[147][0369]*)*([147]|[258][0369]*[258]))[0369]*)*$

Но душа просит большего
--
Re[3]: 10. Triples
От: Spiceman  
Дата: 01.02.14 11:50
Оценка: 10 (1)
Здравствуйте, rg45, Вы писали:

R>Удалось слегка упростить:

R>10. Triples (480)
R>Но душа просит большего

Продолжай упрощать У меня 567. Выделил через "или" две большие группы — одну от начала строки, другу от конца. Внутри каждой группы много маленьких.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.