Outro problema de manipulação de datas: P
Tarefa
Escreva um programa ou uma função que calcule a diferença entre duas datas fornecidas por um usuário.
Entrada e Saída
Semelhante à anterior , as entradas são dois YYYYMMDDs, separadas por um espaço , vírgula ,ou sinal de menos -.
Exemplo de valores de entrada:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
A saída é um número inteiro, que é a diferença entre duas datas, em dias.
Por exemplo, 20110101-20100101rendimentos de entrada 365e 33320229 17000101rendimentos 596124.
Você pode testar os resultados aqui aqui . (Veja os comentários de rintaun abaixo.) Se duas datas forem iguais, o programa retornará 0, se a data for válida (consulte Pontuação ).
Restrição
Obviamente, você não deve usar nenhum tipo de função / classe / ... que esteja relacionado ao carimbo de data / hora ou data e deve usar o calendário gregoriano .
Ponto
Se o seu código não mantiver a restrição, então score = -∞.
O padrão bonusé 1.
- Se o seu código funcionar independentemente da ordem das entradas (por exemplo,
20100101,20110101retorna365ou-365)bonus+=1,. - Se o seu código pode manipular ano 0 ,
bonus+=0.5. - Se o seu código reconhecer um mês inválido (entre 1 e 12) / data (entre 1 e 31), curtir
20109901ou34720132, e imprimirE(e encerra o programa ou retorna algo como0)bonus+=1,. - Embora a regra acima, se o seu código reconhece datas inválidas, como
20100230,20100229, ou20111131e impressõesE(e termina o programa ou retorna algo parecido0),bonus+=1. - Independentemente das duas regras acima, se o seu código reconhece uma string de entrada inválida, como
20100101|20100202ou2010010120100202, e imprimeE(& finaliza o programa ou retorna algo como0)bonus+=1,.
score = floor(-4.2*code.length/bonus). Código com maior pontuação ganha. Se dois códigos principais tiverem a mesma pontuação, os códigos com bônus mais altos serão ganhos. Se dois códigos principais tiverem a mesma pontuação e bônus, os códigos com os votos mais altos vencerão.
(Vencimento: quando houver mais de 5 códigos com mais de (ou igual) +1voto).
20040229. : P
365*4 + 2 + 2= 1464. Obrigado pela informação!