Algoritmos: Problema 3n+1

Escrito por

Criando a solução em Javascript para o Problema 3n+1.Neste post continuamos a série de conteúdos sobre algoritmos. Principalmente sobre tipos de algoritmos que são utilizados em competições de programação e em entrevistas de emprego. O Problema 3n+1 foi retirado do livro Programming Challenges de Miguel Skiena. O objetivo do algoritmo é, dado i e j, como um intervalo de início e fim, achar o maior ciclo. O processo começa processando os valores de n. Se n é um número par, o próximo valor de n será n /2. Caso n seja impar, o próximo valor de n será 3 * n + 1. O algoritmo termina em n = 1. A ideia é calcular o número de passos até que n seja 1. Fazendo este processo entre i e j, e achando o maior número. Neste vídeo, explico um pouco melhor como funciona o algoritmo e como ele foi resolvido.

GitHub

Não deixe de comentar com sua opinião, sugestão ou dúvida! E cadastre seu e-mail para receber nossas últimas novidades. Abraços!

E aqui o algoritmo completo:

1{
2 function cycleLen(n){
3 let steps = 1
4 while(n !== 1){
5 if ( n % 2 === 0){
6 n = n / 2
7 }else{
8 n = 3 * n + 1
9 }
10 steps++
11 }
12 return steps
13}
14function maxCycle(i,j){
15 let max = cycleLen(i)
16 for (let k = i + 1; k <= j; k++) {
17 let currentCycle = cycleLen(k)
18 if (currentCycle > max) {
19 max = currentCycle
20 }
21 }
22 return i+' '+j+' '+max
23}
24console.log(maxCycle(1,10))
25console.log(maxCycle(100,200))
26console.log(maxCycle(201,210))
27console.log(maxCycle(900,1000))
28}
29
30
31
32
33
34
35export const _frontmatter = {"title":"Algoritmos: Problema 3n+1","date":"2017-02-19","author":"Tulio Faria","tags":["Algoritmos","Video-Tutorial"],"thumbnail":"ALG.-3n-790x400.png","keywords":"algoritmos"}

Evolua mais rápido

Junte-se a milhares de desenvolvedores no nosso time de alunos premium e alcance mais rápido o próximo nível da sua carreira.

Ver cursos Premium