|
|
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, на всякий случай, вот что у меня получилось: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 06:54:21 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
С помощью регулярок не интересно. Вот мое решение: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 11:07:13 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Это решение не оптимально, его еще можно доработать. В частности, у меня сначала ищется первое вхождение "}", а потом последне вхождение "{". А надо наоборот, тогда лишних шагов шикла не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 11:10:26 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Репослав, Самым оптимальным решением в даном случае будет посимвольный анализ строки, что и делает strpos Только в вашем случае много раз подряд В процессе анализа собирается структура для обработки и потом в один проход формируется результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 11:40:38 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Anjey aka PMРепослав, Самым оптимальным решением в даном случае будет посимвольный анализ строки, что и делает strpos Только в вашем случае много раз подряд В процессе анализа собирается структура для обработки и потом в один проход формируется результат. я кстати тоже начал писать подобный вариант: - посимвольный анализ строки с запоминанием координат блоков. - потом на основе этих координат вырезаем блоки и склеиваем в готовую строку - отдельный геморой с отслеживанием незакрытых или неоткрытых блоков но до конца я это не доделал, так как объем кода получался совсем не маленький и я бросил) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 11:51:09 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, Если дома не впадло будет включить домашний комп покажу решение аналогичной задачи на сишке, а так писать впадло =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 11:58:16 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
РепославС помощью регулярок не интересно. Вот мое решение: мало того что оно у вас неоптимально, так еще оно перестает работать если в строке, вне блоков, появляются символы { и } да, в условии задачи это не оговорено, но не оговорено и обратное. так что алгоритм должен быть универсальным и устойчивым к таким ситуациям) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 11:59:52 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, Да, действительно, с левыми { и } варианта я не учел.=) Хотя с другой стороны, получается, что в исходной строке определенный формат. А в нормальных форматах специальные символы должны экранироваться. Не подумайте, это я не отмазываюсь=) *ушел дорабатывать скрипт* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 12:10:36 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Нет, в случае с "не специальными" не экранированными { и } возникают неоднозначности: какой из символов является "не специальным"? Код: plaintext или Код: plaintext В данном случае, конечно, очевидно. Но ведь строка в рабочей программе может быть совсем другой. ИМХО, "не специальные" { и } нужно экранировать. А если в строке не равное количество неэкранированных знаков { и }, то программа должна выдавать ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 12:50:55 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Репослав, по идее да, надо экранировать спец. символы. но с другой стороны, пусть результат будет не тем что мы ожидаем, но алгоритм должен игнорировать наиболее явные несовпадения типа: 1. если } скобка до {, то игнор 2. если { не закрыта, то тоже игнор 3. блоком считать от { и до ближайшей справа }, при этом если встречена { то блок сдвигается 4. для вложенных блоков повторять пункт 3. рекурсивно и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 13:04:38 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
вот еще что у меня получилось, без регулярок: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 06:34:23 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
самопроверка. что напечатает скрипт? и почему Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 08:08:40 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, у вас получился очень компактный вариант=) У меня, правда, глаза на лоб полезли от сложночти восприятия( автор Код: plaintext В восьмиричной системе счисления нет знака "8". Что выведет - сейчас проверю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 11:42:50 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Репославr u, у вас получился очень компактный вариант=) У меня, правда, глаза на лоб полезли от сложночти восприятия( автор Код: plaintext правда у него тоже проблемы с непарными символами }. насчет сложности тоже согласен. если разбить на атомарные операции то строки на 3 будет больше. но суть не изменится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 13:28:41 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
что выведет скрипт? и почему, как вы думаете. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 11:50:59 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
r u, ну очевидно, что 666, потому что всё по референсу по цепочке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 14:27:45 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Не секрет, что уважающий себя веб программист должен знать SQL, поэтому следующая задачка именно по нему: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 11:49:55 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. SET @i=0; SELECT* FROM (SELECT `id`, `address`, @i:=@i+1 as `i` FROM `Email`) WHERE NOT `i`%10; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 16:55:30 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Блин, здесь сообщения редактировать нельзя. SET @i=0; SELECT* FROM (SELECT `id`, `address`, @i:=@i+1 as `i` FROM `Email`) AS res WHERE NOT `i`%10; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 16:57:58 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Репослав, это не чистый SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 16:59:42 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Anjey aka PM, если можно, укажите, что здесь не подходит под стандарт? Я плохо знаю SQL, но достаточно хорошо знаю MySQL. Я думал, что "чистый SQL" - имеется в виду без постобработки результатов в скрипте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 17:04:31 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Репослав, Просто на другом сервере ваш запрос работать не будет, только на мускуле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 17:44:19 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
Anjey aka PM, видимо я плохо знаю SQL, но без переменных, ИМХО, никак. Другой вопрос, что "правильнее", наверное, Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 18:20:53 |
|
||
|
(PHP) Разминка для мозгов
|
|||
|---|---|---|---|
|
#18+
an0nym, на FB можно генераторами, на постгре сиквенсами помойму тоже можно, это все-таки ближе к стандарту нежели переменные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 18:37:21 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=36555199&tid=1465177]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
209ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 529ms |

| 0 / 0 |
