DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Calculando anos.

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
Enter fullscreen mode Exit fullscreen mode

Outro com input 2016 e 1800 que retornam:

12.09.2016

12.09.1800
Enter fullscreen mode Exit fullscreen mode

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;
}
Enter fullscreen mode Exit fullscreen mode

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!!!

Top comments (0)