Blog / Algoritmos

Algoritmos: Problema 3n+1

TTulio Faria 19 de fev. de 2017 2 min de leitura
Algoritmos: Problema 3n+1

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.

Veja no meu Gist

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:

{
  function cycleLen(n) {
    let steps = 1
    while (n !== 1) {
      if (n % 2 === 0) {
        n = n / 2
      } else {
        n = 3 * n + 1
      }
      steps++
    }
    return steps
  }
  function maxCycle(i, j) {
    let max = cycleLen(i)
    for (let k = i + 1; k <= j; k++) {
      let currentCycle = cycleLen(k)
      if (currentCycle > max) {
        max = currentCycle
      }
    }
    return i + ' ' + j + ' ' + max
  }
  console.log(maxCycle(1, 10))
  console.log(maxCycle(100, 200))
  console.log(maxCycle(201, 210))
  console.log(maxCycle(900, 1000))
}

Curta o DevPleno no Facebook, se inscreva no canal no YouTube e cadastre seu e-mail para não perder as atualizações. Abraço!

T
Escrito por
Tulio Faria

Mestre em Sistemas de Informação pela USP e criador do DevPleno. Iniciou sua carreira como professor com apenas 18 anos em um curso técnico, foram 11 anos em sala de aula formando desenvolvedores fullstack no sul de Minas Gerais.

Algoritmos
Compartilhar X LinkedIn
Continue lendo

Insights relacionados