Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

153
Visualizações
¿Encontrar una palabra secreta dada una serie de trillizos? (problema de guerra de códigos)

Mi código funciona y necesito ayuda para averiguar cómo optimizarlo. Si es posible, no me des ningún código, solo consejos para optimizarlo, por favor.

Las reglas para el rompecabezas son:

  1. Cada triplete tiene las reglas de cómo se ordenan las letras en la palabra secreta (cada letra es seguida por la siguiente letra dentro de la matriz de tripletes).
  2. todas las letras de la palabra secreta son distintas.

Ejemplo de entrada:

 triplets1 = [ ['t','u','p'], ['w','h','i'], ['t','s','u'], ['a','t','s'], ['h','a','p'], ['t','i','s'], ['w','h','s'] ]

Salida esperada: "whatisup"

Se me ocurrió este código, que funciona. Selecciona las primeras letras que no están precedidas por ninguna otra en las matrices en las que se colocan, las elimina, las concatena en la palabra final y continúa haciéndolo hasta que todas las matrices estén vacías. Sin embargo, el código no se acepta porque está excediendo el límite de tiempo.

 function recoverSecret(triplets) { let secretWord = '', character = ''; let notEmpty = true; let size = triplets.length; //it loops until array is empty while(notEmpty) { notEmpty = false; for (let i = 0; i < size; i++) { for (let j = 0; j < triplets[i].length; j++) { if (character) j = 0; //everytime a character is included, this condition is truthy, so you have to go back to the start of the array because the character was removed last iteration character = triplets[i][j]; let remove = []; //this array will have the positions of the letter to remove in the removal cycle for (let k = 0; k < size; k++) { if (character == triplets[k][0]) remove.push(k); //if the letter is in the triplet and it's not the first position, then it isn't the letter we're looking for, so character equals to '', otherwise it will be the letter which will be added to the secretWord string if (k != i && (triplets[k].includes(character))) { if (character != triplets[k][0]) { character = ''; break; } } } secretWord += character; if (character) { //if character is not '', then a removal loop is done to remove the letter because we just found its place for (x of remove) { triplets[x].shift(); } } // if (triplets[i].length == 0) break; } if (triplets[i] != 0) notEmpty = true; //if every triplet is empty, notEmpty remains false and while loop is over } } return secretWord; }

Si es posible, no quiero ningún código, solo consejos sobre optimización, por favor.

about 4 years ago · Santiago Gelvez
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda