Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Разминка для мозгов / 25 сообщений из 271, страница 1 из 11
31.03.2010, 09:35:20
    #36551980
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
продолжая тему несложных(или сложных) задачек по программированию...

Очередная задачка(встреченная на просторах инета)

есть строка:
Код: plaintext
1.
$str = '{Пожалуйста|Просто} сделайте так, чтобы это {удивительное|крутое|простое} тестовое предложение {изменялось {быстро|мгновенно} случайным образом|менялось каждый раз}';
в фигурных скобках {} хранятся варианты данного участка предложения. варианты разделены символом |

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

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

вариантов решения много. но есть очень компактное и "красивое"

PS. форумных гуру - прошу дать подумать новичкам)) сразу не пишите "дзен-код"
...
Рейтинг: 0 / 0
31.03.2010, 14:46:38
    #36552991
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
r u,

сходу так и не скажешь... Через preg_replace_callback получается, но это некрасиво и долго. Через токены пока не додумался как сделать...

Интересно.)
...
Рейтинг: 0 / 0
31.03.2010, 15:02:46
    #36553053
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
Делал бы анализ строки, 2-3 небольших класса крассиво и аккуратно, можно через PCRE с помощью рекурсивных RE
...
Рейтинг: 0 / 0
31.03.2010, 15:07:30
    #36553070
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
Anjey aka PM,

через рекурсивные там получится на каждый вложенный список выбора прогонять еще раз этот же рекурсивный паттерн, так как матчит он весь кусок выше рекурсивного субпаттерна.
...
Рейтинг: 0 / 0
31.03.2010, 15:13:23
    #36553092
Master5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
Код: plaintext
explode();
...
Рейтинг: 0 / 0
31.03.2010, 15:14:03
    #36553096
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
Master5,

бай вот?
...
Рейтинг: 0 / 0
31.03.2010, 15:15:36
    #36553105
Master5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
an0nymMaster5,
бай вот?
Что-что???
...
Рейтинг: 0 / 0
31.03.2010, 16:11:59
    #36553317
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
an0nymr u,

сходу так и не скажешь... Через preg_replace_callback получается, но это некрасиво и долго. Через токены пока не додумался как сделать...

Интересно.)
ну если честно, Компактность и Красивость решения - понятие растяжимое)))
я не говорил что это будет одна строка ))
хотя может и будет)) гениев хватает

через регулярки - вполне красивое получается)
...
Рейтинг: 0 / 0
31.03.2010, 17:11:26
    #36553536
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
r u,
первое впечатление от Вашей задачки и всевозможных символов ")))" - Вы пришли либо пошутить, либо поиздеваться, но скорее всего "чужими руками жар загребать".
Уважаемый, Вы бы для начала хоть бы что-нибудь от себя предложили!
...
Рейтинг: 0 / 0
31.03.2010, 17:23:18
    #36553572
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
какой жар??
самозабанься.
...
Рейтинг: 0 / 0
31.03.2010, 17:24:45
    #36553581
tarasf31
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
r u,

Вы задачу с решением с Хабра взяли или сами решили?

Судя по формулировке таки скопировали... :)
...
Рейтинг: 0 / 0
31.03.2010, 17:34:41
    #36553613
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
ScareCrowкакой жар??
самозабанься.
А где же Ваше решение, уважаемый?
Или на "пустой крючек" клевать, что-то все-таки останавливает?
Я то знаю ответ, но Вам не скажу.
...
Рейтинг: 0 / 0
31.03.2010, 17:56:44
    #36553704
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
а что общего между наличием решения и моим
1) вопросом
2) предложением

Ответьте пожалуйста на вопрос про жар чужими руками. и про предложение самозабаниться, ненадо переводить разговор на меня.
...
Рейтинг: 0 / 0
31.03.2010, 18:11:41
    #36553746
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
ScareCrowа что общего между наличием решения и моим
1) вопросом
2) предложением

Ответьте пожалуйста на вопрос про жар чужими руками. и про предложение самозабаниться, ненадо переводить разговор на меня.
Ни Ваш вопрос, ни Ваше предложение не имеет ни какого-либо отношения к решению задачи.
Вы не уводите разговор в сторону. Предложите что-то по сути задачи.
В пративном случае с таким же успехом можно сказанное Вами Вам и переадресовать. ;)
...
Рейтинг: 0 / 0
31.03.2010, 18:17:31
    #36553761
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
tarasf31r u,
Вы задачу с решением с Хабра взяли или сами решили?
Судя по формулировке таки скопировали... :)
как я и написал выше, задача не моя. да наверное на хабре она мелькала. строка точно как там была, потому что я её сохранял к себе когда пытался решить. а условие уже я тут своими словами описал.
задачка показалась мне забавной. при рутинной работе не часто такие появляются на горизонте. так что размяться может комуто будет интересно.

да я её решил через регулярки. оптимальнее и компактнее пока не смог придумать)
ps если вы мне не верите) то либо задавайте свои задачки(а я попробую решить) либо чуть позже опубликую свое решение) и можно будет обсудить.
...
Рейтинг: 0 / 0
31.03.2010, 18:25:00
    #36553772
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
AIS r u,
первое впечатление от Вашей задачки и всевозможных символов ")))" - Вы пришли либо пошутить, либо поиздеваться, но скорее всего "чужими руками жар загребать".
Уважаемый, Вы бы для начала хоть бы что-нибудь от себя предложили!

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

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

но если народ затребует еще - то в любой момент выложу как я решал. с этим нет проблем.
...
Рейтинг: 0 / 0
31.03.2010, 18:29:00
    #36553778
tarasf31
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
r utarasf31r u,
Вы задачу с решением с Хабра взяли или сами решили?
Судя по формулировке таки скопировали... :)
как я и написал выше, задача не моя. да наверное на хабре она мелькала. строка точно как там была, потому что я её сохранял к себе когда пытался решить. а условие уже я тут своими словами описал.
задачка показалась мне забавной. при рутинной работе не часто такие появляются на горизонте. так что размяться может комуто будет интересно.

да я её решил через регулярки. оптимальнее и компактнее пока не смог придумать)
ps если вы мне не верите) то либо задавайте свои задачки(а я попробую решить) либо чуть позже опубликую свое решение) и можно будет обсудить.

Я Вас ни в чем не обвиняю. Когда эта задачка появилась на Хабре - я ее решыл через регулярки. Там , к стати, есть пару интересных решения на разных языках програмирования :)
...
Рейтинг: 0 / 0
31.03.2010, 18:38:19
    #36553801
Master5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
AISВ пративном
ScareCrow-а не трошь!
...
Рейтинг: 0 / 0
31.03.2010, 20:23:12
    #36553959
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
r uan0nymr u,

сходу так и не скажешь... Через preg_replace_callback получается, но это некрасиво и долго. Через токены пока не додумался как сделать...

Интересно.)
ну если честно, Компактность и Красивость решения - понятие растяжимое)))
я не говорил что это будет одна строка ))
хотя может и будет)) гениев хватает

через регулярки - вполне красивое получается)
Не, регулярки не катят. Во-первых, получается около 15 строк кода, что уже не круто. Во-вторых, очень неоптимально. Если, конечно, я правильно сделал на регулярках сам.
...
Рейтинг: 0 / 0
31.03.2010, 20:36:52
    #36553967
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
Уважаемые ткоа не смейтесь над моим решением и сильно не критикуйте - регулярки и индеексы в базах всегда были мои вечные проблемы:
Код: plaintext
1.
2.
3.
4.
$html_body = '{Пожалуйста|Просто} сделайте так, чтобы это {удивительное|крутое|простое} тестовое предложение '.
             '{изменялось {быстро|мгновенно} случайным образом|менялось каждый раз}';
preg_replace("/\{([^\}]+)\}/e", 
             "explode('|','\\1')[rand(0,sizeof(explode('|','\\1'))-1)]", 
             $html_body);
ps/ мона ввести функцию катоаря это красивее сделает но это уже будет +3 строчки
2seti
...
Рейтинг: 0 / 0
31.03.2010, 21:04:56
    #36554015
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
Ренат,

код бы хотя бы запустил... синтаксис даже неправилен, не говоря о алгоритме.
...
Рейтинг: 0 / 0
31.03.2010, 21:36:04
    #36554054
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
та же логика, тока строку представил в виде функции:
Код: plaintext
1.
2.
3.
4.
5.
6.
function r($x){
	$s = explode('|',$x);
	return $s[rand( 0 ,sizeof($s)- 1 )];
}
print preg_replace('/\{([^\}]+)\}/e', 
			 'r("$1")',
              $html_body);

2seti
...
Рейтинг: 0 / 0
31.03.2010, 21:37:56
    #36554058
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
Master5AISВ пративном
ScareCrow-а не трошь!
А я вообще никогда никого не трогаю, пока меня не трогают.
Лучше бы по теме красноречие проявляли.
...
Рейтинг: 0 / 0
31.03.2010, 22:19:40
    #36554117
Жортен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
AIS r u,
Вы пришли либо пошутить, либо поиздеваться, но скорее всего "чужими руками жар загребать".
Вы впервые на этом форуме? Так зачем обижать человека не имея о нем ни малейшего представления?

ЗЫ: в следующий раз выпишу форменное предупреждение.
...
Рейтинг: 0 / 0
01.04.2010, 05:16:52
    #36554335
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Разминка для мозгов
РенатУважаемые ткоа не смейтесь над моим решением и сильно не критикуйте - регулярки и индеексы в базах всегда были мои вечные проблемы:
Код: plaintext
1.
2.
3.
4.
$html_body = '{Пожалуйста|Просто} сделайте так, чтобы это {удивительное|крутое|простое} тестовое предложение '.
             '{изменялось {быстро|мгновенно} случайным образом|менялось каждый раз}';
preg_replace("/\{([^\}]+)\}/e", 
             "explode('|','\\1')[rand(0,sizeof(explode('|','\\1'))-1)]", 
             $html_body);
ps/ мона ввести функцию катоаря это красивее сделает но это уже будет +3 строчки
2seti
направление правильное )
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Разминка для мозгов / 25 сообщений из 271, страница 1 из 11
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]