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 YYYYMMDD
s, 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-20100101
rendimentos de entrada 365
e 33320229 17000101
rendimentos 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,20110101
retorna365
ou-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
20109901
ou34720132
, 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
, ou20111131
e 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|20100202
ou2010010120100202
, 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) +1
voto).
20040229
. : P
365*4 + 2 + 2
= 1464. Obrigado pela informação!