Предлагаю помериться... Человеко-часами

Фома
На сайте с 10.11.2006
Offline
600
#71
silicoid:
miltorg, отныне решение задач обойдется вам примерно в 30 евро/задача.

Это всё педересня и томление духа. Вот какое у тебя образование? Число ПИ докуда посчитаешь? А 60 на 15 разделишь без калькулятора?

Аренда апартаментов на Тенерифе (http://las-americas.ru/).
S
На сайте с 13.10.2014
Offline
171
#72
Фома:
томление духа

Дух уже утомлен по самое неболуйся. это да

D
На сайте с 31.01.2017
Offline
15
#73
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 каля-------маля

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

S
На сайте с 13.10.2014
Offline
171
#74

добавлю сюда, чтоб 2 раза не вставать


$input = '[li class="menu-123"][a href="/kontakt" title="Контакт"]Контакт[/a][/li][ba]каля маля[/ba] jjjjjjj [bb]каля-------маля[/bb]';
print preg_replace('/\[(\w{1,3})(\]|.*\])(.*)\[\/\\1\]/imU', '$3', $input);

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

[Удален]
#75
silicoid:
добавлю сюда, чтоб 2 раза не вставать


$input = '[li class="menu-123"][a href="/kontakt" title="Контакт"]Контакт[/a][/li][ba]каля маля[/ba] jjjjjjj [bb]каля-------маля[/bb]';
print preg_replace('/\[(\w{1,3})(\]|.*\])(.*)\[\/\\1\]/imU', '$3', $input);


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

Не работает:

<?php

$input = '[li class="menu-123"][a href="/kontakt" title="Контакт"]Контакт[/a][/li]

[bahhhhhh]каля маля[/bahhhhhh] jjjjjjj [bb]каля-------маля[/bb]';

print preg_replace('/\[(\w{1,3})(\]|.*\])(.*)\[\/\\1\]/imU', '$3', $input);

Вы правда не понимаете условие задачи? Внутри [] может быть хоть что.

И вы её решаете не тем способом. А не тем способом решаете потому - что не знаете правильный. ибо он - следует из условия.

И мало того, исписан во всех примерах по 20 раз

---------- Добавлено 17.02.2017 в 03:27 ----------

demiux:
Нам тоже скучно решать олимпиадные задачки. Ну раз уж напоминаете и вроде третий раз.
Подсчет символов как и у вас - строка с регуляркой:
  • Вариант 29 символов, у вас 34
  • Вариант 33 символа, против 38

Решение конечно же притянуто за уши как и ваши, но выдает нужный результат.
Вот md5 хэш файла с двумя решениями:

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

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

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

А я тут лезу в лаптях с колхозу...

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

Олимпиадок больше не будет. Ибо для меня всё предельно ясно.

---------- Добавлено 17.02.2017 в 03:27 ----------

#!/usr/bin/perl

$_=q~[li class="menu-123"][a href="/kontakt" title="Контакт"]Контакт[/a][/li]

[ba-hhhhhhhhh]каля маля[/ba-hhhhhh] jjjjjjj [bb]каля-------маля[/bb]

~;

s/\[\/[^a].*?\]//g; #19 символов

s/\[[^\/a].*?\]//g; #19 символов

print;

D
На сайте с 31.01.2017
Offline
15
#76

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
[Удален]
#77
demiux:
miltorg, во вложении [ATTACH]160382[/ATTACH] архив с файлом. Задача ведь была у кого меньше символов и на выходе получить такой же результат?
Ошибся, не 29, а 28 символов по вашим меркам. Хотя почему вы упорно не считаете оператор print, не понимаю.

Чтобы было удобнее, вынес регулярку из файла:
s!<(.+)[^>]*>(.+)</\1>!$2!g;
print;

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


Не работает. Ссылки должны оставаться и текст. А у вас остаётся только первая ссылка.

---------- Добавлено 17.02.2017 в 08:59 ----------

demiux:

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

Вы не применили. И даже не поняли.

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

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

D
На сайте с 31.01.2017
Offline
15
#78
miltorg:
Не работает. Ссылки должны оставаться и текст. А у вас остаётся только первая ссылка.

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

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

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

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

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

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

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

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

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

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

[Удален]
#79

32 символа:

s!</[^a].*?>!!g;

s!<[^a/].*?>!!g;

Aisamiery
На сайте с 12.04.2015
Offline
302
#80
miltorg:

#!/usr/bin/perl

$_=q~[li class="menu-123"][a href="/kontakt" title="Контакт"]Контакт[/a][/li]
[ba-hhhhhhhhh]каля маля[/ba-hhhhhh] jjjjjjj [bb]каля-------маля[/bb]
~;

s/\[\/[^a].*?\]//g; #19 символов
s/\[[^\/a].*?\]//g; #19 символов
print;

Это вы два раза обрабатываете строку? Ну ну, знаток)))

s/\[(?!a|\/a).*?\]//g; 
print;

Символы сами посчитаете?

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий