demiux

Рейтинг
15
Регистрация
31.01.2017
miltorg:
Красота. спасибо.

Это туда подставьте. Знаток.

[audio]Должен остаться только текст[/audio]
[a href="/kontakt" title="Контакт"][[[А тут текст со скобочками]]][/a]
miltorg:
Не работает. Ссылки должны оставаться и текст. А у вас остаётся только первая ссылка.

Я посмотрю вы мастер фразы из контекста выдергивать. Пост перечитайте что ли полностью, пока не дойдет.

Если там буков много, то подставьте в свое решение теги:

<audio>, <abbr>, другие сами найдете.

miltorg:
Вы не применили. И даже не поняли.
Задачка была на жадность. А никакой жадности в вашей регулярке нет.

Повторяетесь. Задачу свою перечитайте тоже, желательно несколько раз. И найдите там про "жадность". Экстрасенсов здесь нет, вам уже говорили.

miltorg:
С олимпиадами я закончил - поэтому править свой код мне лениво.

А никто не просит переписывать. Уже все написано и на блюдечке выложено. Подсказка: ответ внизу поста с решением.

Тыкаешь носом как котенка, а он все равно ссытся по углам.

miltorg:
Но после этой и нескольких тем до, я понял, что я наоборот очень, очень хорошо думал о людях... Люди работают в сфере программирования и не понимают элементарных вещей. Элементарных.

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

Рамарио:
По поводу "медленные операции" - спасибо, учту. hide действительно лучше. Однако, замечу, что у меня в браузере пока все работает очень быстро, вообще даже не заметно (а комп у меня прямо скажем - слабенький).

Очень заметно на мобильных. У меня доходило до 2 секунд. Но там целиком сложный список генерировался на клиенте.

miltorg, во вложении [ATTACH]160382[/ATTACH] архив с файлом. Задача ведь была у кого меньше символов и на выходе получить такой же результат?

Ошибся, не 29, а 28 символов по вашим меркам. Хотя почему вы упорно не считаете оператор print, не понимаю.

Чтобы было удобнее, вынес регулярку из файла:

s!<(.+)[^>]*>(.+)</\1>!$2!g;

print;

А теперь немного усложним входные данные, добавим строки:

<audio>Я текст из тега аудио</audio>
<a href="/kontakt2">Контакт2</a>
<a>Контакт3</a>
<a><<<Контакт4>>></a>
<b><<<Контакт5>>></b>

Результат вашего решения. Тег <audio> остался и с 2 последними строками какая-то ерунда. Да да, оказывается существуют другие теги на букву A. 3 ошибки.

<a href="/kontakt" title="Контакт">Контакт</a>
каля маля jjjjjjj каля-------маля
<audio>Я текст из тега аудио</audio>
<a href="/kontakt2">Контакт2</a>
<a>Контакт3</a>
<a>>></a>
>>

Мое решение. Другие теги <a> тоже порезало. Но я и говорил: притянуто за уши. 3:3 по ошибкам, 28 символов против 34, я победил?:)

<a href="/kontakt" title="Контакт">Контакт</a>
каля маля jjjjjjj каля-------маля
Я текст из тега аудио
Контакт2
Контакт3
<<<Контакт4>>>
<<<Контакт5>>>

А вот вполне сносный вариант, но увы, целых 46 символов занимает:

s/<((?!a[\s>])[^\s>]+)[^>]*>(.+?)<\/\1>/$2/gi;

Ну и результат его работы:

<a href="/kontakt" title="Контакт">Контакт</a>
каля маля jjjjjjj каля-------маля
Я текст из тега аудио
<a href="/kontakt2">Контакт2</a>
<a>Контакт3</a>
<a><<<Контакт4>>></a>
<<<Контакт5>>>

Надеюсь в этот раз донес до вас мысль, что смысл то не в том у кого короче, толще, длиннее, быстрее. Главное уметь правильно применить нужный инструмент, в нужном месте.

И правильно поставить задачу, особенно себе, как исполнителю. Вы дали ТЗ, я по нему и сделал, вот только с вашей точки зрения. А получилось...ну что получилось.

zip test.pl.zip
miltorg:
Ладно. Мне скучно. Если никто не решит задачу - разговаривать на таком уровне знаний - смысла не вижу

Нам тоже скучно решать олимпиадные задачки. Ну раз уж напоминаете и вроде третий раз.

Подсчет символов как и у вас - строка с регуляркой:

  • Вариант 29 символов, у вас 34
  • Вариант 33 символа, против 38

Решение конечно же притянуто за уши как и ваши, но выдает нужный результат.

Вот md5 хэш файла с двумя решениями:

$ md5sum test.pl
5054d60fea84c44cb4fa04ef7fb783ad test.pl

Вот результат работы:

$ perl test.pl

<a href="/kontakt" title="Контакт">Контакт</a>
каля маля jjjjjjj каля-------маля

[a href="/kontakt" title="Контакт"]Контакт[/a]
каля маля jjjjjjj каля-------маля

Как выложите решение с таким же количеством символов или признаете поражение или по требованию зала, я выложу свое.🍿

Mish-ka:
Подведя итог - оплата работы специалиста, с оценкой за час - хрень полная.
Value - нашефсё.

Согласен, если заказчик адекватный и по договору нельзя отступать от ТЗ.

danforth:
Когда работаешь по часам, можно реализовывать бред заказчика сколько угодно раз заново, потому что вначале ему сказали: "каждый мой час работы стоит n долларов", а он в свою очередь согласился.

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

И под этим подпишусь. А вот почему.

Были случаи на моей практике, пригласил заказчик специалиста что-то там сделать. Специалист сидит день, сидит второй. Потом зовут меня и я справляюсь за 10 минут. И нет я не супер гений, просто "собаку на этом съел", а тот специалист впервые столкнулся.

Так вот вопрос. Как в этом случае производить оплату, за сделку или по часам? Ведь приди я первым, то с точки зрения заказчика за 10 минут разве что можно успеть в носу поковырять.

---------- Добавлено 15.02.2017 в 16:40 ----------

Вот вам притча, возможно многие читали, но думаю милторгу будет полезно почитать.

Главное — знать, где ударить
Эту историю рассказывают про великого физика-экспериментатора прошлого века Петра Леонидовича Капицу. И относится она ко времени, когда он жил и работал в Европе, в лаборатории у Резерфорда.

Владелец одной фабрики был чрезвычайно обеспокоен. Паровой генератор, который обеспечивал светом и энергией весь его завод, сильно вибрировал. Это очень сложная проблема, общего решения которой не существует и сейчас. Множество экспертов пытались починить его, но все их попытки были безуспешны.
— Время — деньги, — повторял себе владелец фабрики, подсчитывая убытки из-за потерянной продукции, — время — деньги.
В этот момент человек в голубом комбинезоне заглянул к нему в контору.
— Я могу починить ваш котёл, сэр, — сказал он.
Фабрикант был не впечатлён.
— Я приглашал лучших из лучших специалистов, чтобы они починили паровой котёл, но никто из них не смог помочь мне. Посмотрите на себя, у вас только маленькая сумка с инструментами, да и инструментов в ней не так много, если я не ошибаюсь.
— Совершенно верно, сэр. Я взял только те инструменты, которые пригодятся мне для выполнения этой работы. Так вы позволите уладить вашу проблему?
Рабочий не произвёл впечатления на фабриканта, но, поскольку терять ему было уже нечего, он повёл его в помещение, где находился котёл. В центре комнаты стоял сам котёл. От него во всех направлениях тянулось огромное количество труб, сообщающихся с каждым помещением завода.
Покровительственным тоном фабрикант пригласил работника приступать к делу. Спокойно и без суеты человек в голубом комбинезоне вынул из своей сумки один инструмент, маленький резиновый молоток.
Аккуратно и метoдичнo он начал простукивать различные участки машины, внимательно прислушиваясь к звукам, которые издавала металлическая поверхность. За десять минут он простучал датчики давления, термостаты, подшипники и соединения, где, как он предполагал, находится повреждение. Наконец, он вернулся к своей сумке с инструментами, положил на место маленький молоточек и выбрал большой молоток.
Он подошёл к одному из коленчатых соединений в одной из секций труб и нанёс несильный удар молотком. Эффект был мгновенным. Что-то сдвинулось, и паровой генератор перестал вибрировать.
Фабрикант был восхищён:
— Изумительно! Изумительно! Пришлите мне счёт. Удвойте ваши расценки.
— В этом нет необходимости, сэр, — ответил работник.
Когда несколько дней спустя фабрикант получил счёт, он был ошеломлён. Сумма намного превышала его ожидания. 10000 фунтов стерлингов! Большие деньги по тем временам. Несмотря на то, что он заплатил намного больше тем экспертам, которые пытались исправить поломку, но потерпели неудачу, он знал, что они провели там несколько дней. И они были представителями компаний с отличной репутацией! А этот странный человек провёл там всего десять минут.
Фабрикант дал секретарше поручение, чтобы она отослала ему запрос с просьбой подробно расписать стоимость оказанных услуг.
Вскоре с почты пришёл ответ.
За десять минут простукивания — 1 фунт.
За знание того, куда нужно ударить — 9999 фунтов.
Итого: 10000 фунтов.

IE 9 и выше, остальные браузеры поддерживают все используемые в этом коде функции. По ссылкам на сайте developer.mozilla.org внизу есть таблица совместимости.

Если все же сомневаетесь, используете jquery версию. Судя по приведенному коду он у вас подключен.

Document.querySelector() - Возвращает первый элемент внутри документа. Вам нужен Document.querySelectorAll()

Для IE 9 и выше

document.querySelectorAll('span.currency').forEach(function(span){

span.innerHTML = currency;
});

или на jquery

$('span.currency').each(function(){

this.innerHTML = currency;
});

Еще бы порекомендовал, для правильной индексации, значение по умолчанию сразу выводить в span на сервере.

А js поменять на такой:

var currency;

switch (ymaps.geolocation.country) {
case 'Казахстан':
currency = '5000 тенге';
break;
case 'Беларусь':
currency = '1000 бел. рублей';
break;
}

if(currency) {
document.querySelectorAll('span.currency').forEach(function(span){
span.innerHTML = currency;
});
}

Я так понимаю их много, в каждом своя цена? Опишите подробней.

Попробуйте добавить:

proxy_redirect off;

А это если WebSocket используются:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

http://nginx.org/ru/docs/http/websocket.html

Всего: 102