DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Página por página

Olá, seja bem vindo a mais uma etapa do Resolvendo problemas no Hacker-Rank,nessa sessão iremos fazer um algoritmo de leitura de páginas de um livro. Vejamos como separar isso.

Drawing Book -

Esse problema é mais simples de se compreender. Vamos movimentar as páginas baseadas na página escolhida de um livro. Começando a virar as páginas pela frente ou pelo verso do livro. Eles sempre viram uma página de cada vez. Quando abrem o livro, a página está sempre do lado direito:

  • int n: o número de páginas no livro
  • int p: página a chegar

Image description

Usando o diagrama acima, se o aluno quiser chegar à página 3 ,ele abre o livro na página 1, vira a página e está na página correta. Se eles abrirem o livro na última página, página 5 , eles viram a página e estão na página correta. Retornando 1 .

Vejamos a solução deste caso:

function pageCount(n, p) {
  // Write your code here;
  //n=6;p=2 /// pages(3),numberPage(1)
  const pages = Math.floor(n/2); 
  const numberPage = Math.floor(p/2)

    //1-0 < 3-1, return 1; else 3-1=2
  if(numberPage-0 < pages - numberPage) return numberPage
  else return pages - numberPage
}
Enter fullscreen mode Exit fullscreen mode

Nesse código criamos uma forma de encontrar a página correta não importando de que lado o livro foi aberto. Ele se inicia criando uma função que guarda os valores de n(número de páginas) e p(página exata) como valores de parâmetro.

É criado uma const chamada pages que irá pegar o maior número inteiro menor ou igual ao número proposto. Mas nesse caso ainda será divido sobre 2. Assim também será com numberPage. Com isso se cria um if onde se o valor da página exata divido por 2 for menor que o número total de páginas divido por 2, prevalecerá o valor o maior número inteiro menor ou igual ao número da página exata. Caso contrário será retornado o valor do total de páginas divido por 2 - a pagina exata divida por 2.

O resultado será:

6 //n
2 //p

input = 1
Enter fullscreen mode Exit fullscreen mode

Com isso concluímos mais um episódio, e nos vemos na próxima!!!

Top comments (0)