[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP задания для практики
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
Invis1ble
alive
Цитата
хотя вложили в еще одни скобки и по идее значение должно быть в другой переменной

нет, там ничего больше не вложено. Тот кусок, что я добавил используется для доп. проверки на случай, когда год имеет вид YY00. Этот кусок реализует примерно следующий алгоритм:
если предыдущие две цифры - 00 то:
если первая цифра года - 0, 2, 4, 6 или 8 то:
если вторая цифра года 0, 4 или 8 то:
год високосный
иначе:
если вторая цифра года - 2 или 6 то:
год високосный

(?<=) - позиционная проверка (ретроспективная положительная), поэтому она незахватывающая, т.е. результат не сохраняется - следовательно никаких новых "переменных" не появляется

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

neadekvat
Invis1ble
Респект smile.gif
Invis1ble
neadekvat
Спасибо smile.gif

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

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

neadekvat
Invis1ble, но я вот смотрю на получившуюся регулярку и думаю: если бы мне пришлось ее разбирать... Я бы сначала, наверное, долго мучался, потом плюнул б, пошел писать с нуля, снова бы долго промучался, вернулся бы к разбору...
В общем, задача действительно запарная. Мягко говоря.
kirik
Цитата (Invis1ble @ 6.09.2011 - 09:10)
Версия 1.0

Теперь всё пучком.. с нормальными датами.. :)
даты не нормальные
$dates = array(    
'20000.01.30',
'2000.003.30',
'2000.05.030',
);
Invis1ble
kirik
Цитата
даты не нормальные

не подходят под условия задачи - YYYY.mm.dd tongue.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

alex12060
Битва полов экспертов...
Крутяк, я падаю на колени smile.gif

Кстати, вот буквально минут 10 назад хотел задать вопрос по поводу условий в регэкспах, и выяснил, что можно таки столь дивно извращаться smile.gif
Интересно, такие конструкции прокатят в htaccess? biggrin.gif
Invis1ble
alex12060
Цитата
Интересно, такие конструкции прокатят в htaccess?
kirik
Цитата (Invis1ble @ 6.09.2011 - 12:23)
не подходят под условия задачи - YYYY.mm.dd

Пофикси уж smile.gif Дабы вывод полностью соответствовал работе функции checkdate().
Invis1ble
Цитата
Пофикси уж

лень, если чесно smile.gif потом может напишу smile.gif



Спустя 4 минуты, 59 секунд Invis1ble написал(а):
Вот, на скорую руку написал, вполне возможно, что есть баги
Версия 1.1beta
$pattern =
'/^
# год
(?!0000)\pN*?(?:(
(?:
# високосный
([02468])|[13579])(?(2)[048]|[26]))(?(?<=00)(?(?<=[02468].{3})(?<=[048].{2})|(?<=[26].{2})))|
# невисокосный
\pN{2}
)
\.
# месяц
0*?(?:(0)|1)(?(3)[1-9]|[0-2])
\.
# число
0*?(?!00)(?:(?<!02\.)(3)|[0-2])
(?(4)
# 4-я "триада"
(?(?<=(?:01|03|05|07|08|10|12).{2})[01]|0)|
# 1-3 "триады"
(?(?<=02.{2})
# февраль
(?(?<=2)
# 3-я "триада"
(?(1)
# високосный год
\pN|
# невисокосный год
[0-8]
)|
# 1-2 "триады"
\pN
)|
# не февраль
\pN
)
)
$/ux'
;


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

kirik
Invis1ble
Сорри smile.gif Я с просони не то насчитал.. Твоя регулярка даже лучше работает чем checkdate, т.к. последняя заваливается на тех датах что я указал.
Ты мега крут! smile.gif

1.1бета - не нужна smile.gif Версия 1.0 отлично работает. Хоть 1.1б и работает как checkdate, но я считаю что дата 2000.05.030 (или 2c00.05.030) никак не может быть "true".
Invis1ble
Цитата
дата 2000.05.030 (или 2c00.05.030) никак не может быть "true"

вот я тоже так думаю, так что будем считать, что version 1.0 решает задачу в полном объеме

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

alive
Цитата (Invis1ble @ 6.09.2011 - 15:40)
если предыдущие две цифры - 00 то:

предыдущие, или по всей регулярке?

что показал crash-test для времени обработки обеих ф-ий, не сравнивали?
Invis1ble
alive
Цитата
предыдущие, или по всей регулярке?

предыдущие, т.е. 2 последние цифры года
Цитата
что показал crash-test для времени обработки обеих ф-ий, не сравнивали?

если ты имеешь ввиду тест времени, то не проводил. Для обеих - это для паттерна и checkdate() ? Думаю checkdate() будет в нехилом плюсе.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

alex12060
Задание:

Составление алгоритма для генерирования штрих-кода

Вход: Текст
Выход: Изображение штрих кода

Главное - распознование штрих кода Abbyy FineReader 10

Алгоритм и работа на С# здесь:

http://habrahabr.ru/blogs/net/127799/

З.Ы. Сам еще не приступал, чуть позже займусь smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.