Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

216
Vistas
Hacer que un contador se detenga si rompe una secuencia determinada

Breve resumen sobre mi pregunta: estoy tratando de convertir una secuencia en una secuencia "condicional": la entrada es AN ARRAY hecho solo con verdadero y falso, lo que creo que lo hará más difícil de lo que sería si estuviera hecho de una secuencia de números. La idea es hacer que cuente una secuencia de "verdadero" y se rompa cuando la siguiente entrada sea "falso" y devuelva el conteo más grande.


 // If the input is something like [true, true, ... true, true] // should return count => input.length // My issue is to make it break when it have a interruption ie // [true, true, true, false, true, true, false] // should return => the bigger sequence; with my code it returns 5 function sol(sequence) { let count = 0; for (let i = 0; i < sequence.length; i++) { if (sequence[i] == true) { if (sequence[i] == sequence[i+1]){ count++; } } } // I tried to add a break; but isn't worked like i wanted // for (let i = 0; i < sequence.length; i++) { // if (sequence[i] == true) { // if (sequence[i] == sequence[i+1]){ // count++; // } // if (sequence[i] != sequence[i+1]) { // break; // } // } // } // I need the counter has bigger (or equals) than 7 otherwise it return a "fail" if (count >= 7) { console.log(count) } else { console.log('failed') } }


Después de algunas explicaciones en la publicación, aquí hay un resultado funcional:

 function sol(sequence) { // Move the "+1" to low then when have no "true" will return 0. let count = 0; let largestSequence = 0; for (let i = 0; i < sequence.length; i++) { if (sequence[i] == true) { if (sequence[i] == sequence[i + 1]) { count++; } } else { if (largestSequence < count) { largestSequence = count + 1; count = 0; } } } return Math.max(largestSequence, count); }


Y aquí está la respuesta final que superó todos mis ejemplos extraños. Gracias Gulam

 let sequenceContinued = false; let count = 0; let sequences = []; for (let i = 0; i < array.length; i++) { const item = array[i]; if (item === false && sequenceContinued === true) { sequenceContinued = false; sequences.push(count); count = 0; continue; } if (item === true) { sequenceContinued = true; count++; } if (i === array.length - 1 && item === true) { sequences.push(count); } } const longestCount = sequences.length ? Math.max(...sequences) : 0;
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

 const array = [ true, false, false, false, true, true, false, true, true, true, false, true, true, true, true ]; let sequenceContinued = false; let count = 0; let sequences = []; for (let i = 0; i < array.length; i++) { const item = array[i]; if (item === false && sequenceContinued === true) { sequenceContinued = false; sequences.push(count); count = 0; continue; } if (item === true) { sequenceContinued = true; count++; } if (i === array.length - 1 && item === true) { sequences.push(count); } } const longestCount = sequences.length ? Math.max(...sequences) : 0; console.log(longestCount);

about 4 years ago · Juan Pablo Isaza Denunciar

0

 function sol(sequence) { let count = 1; let largestSequence = 0; for (let i = 0; i < sequence.length; i++) { if (sequence[i] == true) { if (sequence[i] == sequence[i + 1]) { count++; } } else { if (largestSequence < count) { largestSequence = count; count = 1; } } } return Math.max(largestSequence, count); } var arr = [true, false, true, true, true, true, true]; var solution = sol(arr); console.log(solution);

Puede crear una variable separada 'largestSequence' y cada vez que se encuentre un valor falso, almacenará el valor de recuento en la mayor secuencia.

Al final, se devuelve el máximo de las dos variables: secuencia más grande y recuento porque puede suceder que la secuencia más grande de verdaderos no termine con un falso como [verdadero, falso, verdadero, verdadero, verdadero, verdadero, verdadero].

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda