вторник, 11 марта 2008 г.

Программерам

Сегодня во френдленте наткнулся на пост уважаемого
info
binaryanimal
, предлагающий использовать выражение (m-4)*(m-6)*(m-9)*(m-11)?m-2?31:y%4?28:2 9:30 для вычисления количества дней в месяце m в зависимости от года y (в пределах от 1901 до 2099 гг). Мне это выражение не очень понравилось тем, чем переменная m встречалась слишком часто, да и тернарных операторов условия многовато, в связи с чем я поднапрягся и вывел его в виде 31-((m+5)%13%2?(!!(m==2)*(1+!!(y%4))+1):0) . Вопрос к уважаемым френдам, сможет ли кто-нить укоротить это выражение не увеличивая количество вхождений переменных m и y? Чур, использовать только с-like синтаксис.

Комментариев нет: