Resolvendo problemas no HackerRank: Calculando anos.
Altencir Junior
Posted on February 22, 2023
Olá, seja bem vindo a mais uma etapa do Resolvendo problemas no Hacker-Rank,nessa sessão iremos analisar os anos e converter para uma data, caso sejam anos bissextos ou não.
Day of the Programmer -
O problema de hoje nos conta uma história de uma viajante no tempo que irá para o dia da programação numa determinada data do passado. O que nos importa é quando nos é pedido certas regras com base na diferença de um calendário Juliano e um Gregoriano, que tem suas características. Nosso objetivo é criar um código que baseado em datas que serão enviadas no problema, sigamos o resultado.
Fevereiro é o único mês com quantidade variável de dias; tem 29 dias durante um ano bissexto e 28 dias durante todos os outros anos.
No calendário juliano, os anos bissextos são divisíveis por 4; no calendário gregoriano, os anos bissextos são um dos seguintes: Divisível por 400. Divisível por 4 e não divisível por 100.
O formato dd.mm.aaaa, onde dd é o dia de dois dígitos, mm é o mês de dois dígitos e aaaa
Nos dão o ano 2017 que retorna um input seguinte:
13.09.2017
Outro com input 2016 e 1800 que retornam:
12.09.2016
12.09.1800
Vamos então ao código de execução do desafio:
function dayOfProgrammer(year) {
let day = "";
if (year === 1918) {
// Se for o ano de transicao (1918), adiciona 13 dias ao calendario normal
day = `26.09.${year}`;
} else if (year > 1918) {
// Se for apos o ano de transicao, verifica se eh um ano bissexto ou nao
day =
year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)
? `12.09.${year}`
: `13.09.${year}`;
} else {
// Se for antes do ano de transicao, verifica se eh um ano bissexto ou nao
day = year % 4 === 0 ? `12.09.${year}` : `13.09.${year}`;
}
return day;
}
O código está bem explicativo,onde usamos if
para pôr a condição da primeira data e também mais a frente colocamos as condições para um ano ser divisível por 4 ou 400, ou não ser divisível por 100.
Com isso concluímos mais um episódio, e nos vemos na próxima!!!
Posted on February 22, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.