Re: [Cascavel-pm] GOLFE! (Re: Total de dia de determinado mês)

Breno G. de Oliveira breno em clavis.com.br
Quarta Novembro 9 18:13:51 PST 2005


Muito bom! Tinha até pensado em algo com 28+(0|1) mas nunca teria feito
nada parecido nem tão elegante!

O único comentário é que não tem as verificações para datas inválidas.
Meses acima de 12 devolvem 0, o que seria uma ótima verificação, não
fosse pelo fato de que meses abaixo de 1 retornam a lista como se fosse
cíclica (ou seja, 31, 30, etc...), ou seja, se eu passar "-10 2005" ele
retorna "28". Curiosamente (ou nem tanto, se prestarmos atenção à
verificação do bissexto), o cálculo não é preservado e a entrada "-10
2000" retorna 28 (e não 29). A verificação do ano tb não existe nessa
versão.

Sem esses controles, a minha versão ficaria assim:

($m,$a)=@ARGV;print$m==2?!($a%4)&&($a%100)||!($a%400)?29:28:$m%2?($m<8?31:30):($m<8?30:31)

com 90 caracteres ;P

(mas realmente a minha é bem mais ilegível e parece "line noise". A do
Nelson é bem mais clara sobre o que está acontecendo, emho)

E ai? Alguém consegue menor? (com ou sem a verificação da entrada inválida)?


[]s

breno


Solli Moreira Honorio wrote:
>>Em 107 caracteres:
> 
> Na verdade são 106 caracteres....
> 
> 
>> Nelson Ferraz wrote:
>> Em 107 caracteres:
>>
>>
($m,$a)=@ARGV;print[31,28,31,30,31,30,31,31,30,31,30,31]->[$m-1]+($m==2&&!($a%4)&&($a%100||!($a%400))?1:0)
>>
>> --
>> Nelson Ferraz
>> GNU BIS - www.gnubis.com.br
>> _______________________________________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>
>>


Mais detalhes sobre a lista de discussão Cascavel-pm