Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярки: замена ссылки на ютуб (https://javascript.ru/forum/misc/30183-regulyarki-zamena-ssylki-na-yutub.html)

oneguy 31.07.2012 01:18

Цитата:

Сообщение от Hekumok
oneguy, мне вот это убрать?

Да, пожалуйста.
Цитата:

Сообщение от Hekumok
oneguy, Решение не показывайте пока - я завтра еще подумаю, да и melky хотел...

Хорошо.

melky 31.07.2012 12:50

oneguy, что-то получилось.

кто не хочет - пусть не смотрит.
// это такой хайд :)
var reg = eval(Array.prototype.map.call("2+1.,+B@_4-/_4.',2", function (a) { return String.fromCharCode(a.charCodeAt() - 3); }).join(''));

// рега без флагов !
alert( false === reg.global === reg.ignoreCase === reg.multiline );

function gcd(m, n) {
  return (Array(m+1).join("*")+","+Array(n+1).join("*")).match(reg)[0].length;
}

alert( gcd(3, 4) ); // 1  - :) 
alert( gcd(3, 6) ); // 3
alert( gcd(15, 25) ); // 5
alert( gcd(35, 42) ); // 7
alert( gcd(42, 35) ); // 7 (!) - порядок чисел неважен.

oneguy 31.07.2012 15:16

Цитата:

Сообщение от melky
oneguy, что-то получилось.

Вы неправильно поняли условие задачи, нужно вставить именно литерал регулярного выражения, а не идентификатор, то есть регулярка должна быть постоянной.

Hekumok 31.07.2012 15:23

Не, не знаю как решить

melky 31.07.2012 16:09

Цитата:

Сообщение от oneguy (Сообщение 193255)
Вы неправильно поняли условие задачи, нужно вставить именно литерал регулярного выражения, а не идентификатор, то есть регулярка должна быть постоянной.

..... какая разница, там eval'ится литерал в "хайде". всё равно он постоянный - хоть в переменной, хоть и не в переменной.
function gcd(m, n) {
  return (Array(m+1).join("*")+","+Array(n+1).join("*")).match(/(.+)(?=\1*,\1+$)/)[0].length;
}

alert( gcd(3, 4) ); // 1  - :) 
alert( gcd(3, 6) ); // 3
alert( gcd(15, 25) ); // 5
alert( gcd(35, 42) ); // 7
alert( gcd(42, 35) ); // 7 (!) - порядок чисел неважен.

... либо я туплю, не понимаю, о чём Вы, и прошу пояснить.

oneguy 31.07.2012 17:19

melky,
Да, извините, я не сразу понял, что там регулярка просто закодирована и не зависит ни от каких данных.
Засчитал. Решили с моей подсказкой или без?
Жаль, не могу поставить плюсик, что-то глючит сайт Уже поставил.

Hekumok 31.07.2012 17:29

По ходу я конкретный тормоз >.< Еси до этого не додумался

melky 31.07.2012 17:45

Цитата:

Сообщение от oneguy (Сообщение 193296)
Решили с моей подсказкой или без?

честно? я перед тем как спать лечь, прокрутил три варианта :
Код:

1. gcd(2, 4) - простое и составное
2. gcd(3, 7) - два простых
3. gcd(4, 8) - два составных

запомнил выдачу, и лёг спать. в процессе размышляя, что там за алгоритм.
было 3 варианта, два - неверные.

после того, как зашел на форум, увидел подсказку, и понял, что я на верном пути.

дальше я всё время добивал регулярку :)

Dim@ 31.07.2012 20:45

melky,
oneguy,
раз уж я не понимаю регулярку melky - можете мне её пожалуста объяснить, вот как я её вижу
/
  (.+) // просто получаем все содержимое
  (?=\1* // опять получаем все содержимое
  ,\1+$) // <<<<----WTH?
/

Dim@ 31.07.2012 21:40

oneguy,
melky,
в общем я то думал что хорошо знаю реги (они мне в отличии от других людей быстро и понятно давались, но в 4-ом Флэнагане(как же писать его имя не жирным шрифтом ;) )(и по которому я учился) не было того что написал melky), а в результате я их не очень хорошо знаю


Часовой пояс GMT +3, время: 15:25.