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
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
}
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
Com isso concluímos mais um episódio, e nos vemos na próxima!!!
Top comments (0)