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

224
Visualizações
Make a counter stop if it breaks a determined sequence

Brief summary about my question: I'm trying to turn a sequence into a "conditional" sequence -- the input is AN ARRAY made with only true and false which I think will make it harder than it will be if it made of sequence of numbers. The idea is to make it count a sequence of "true" and break when the next input is "false" and returns the bigger count.


// 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 i. e. 
// [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')
    } 
}


After some explains on the post here's a functional result:

  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);
}


And here's the final answer that aced all my weird examples. Thank you 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 Respostas
Responde à pergunta

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 Relatório

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);

You can created a separate variable 'largestSequence' and everytime a false value is encountered, it will store the value of count in largestSequence.

At the end the maximum of the two variables-largestSequence and count is returned because it may happen that the largest sequence of trues is not terminated by a false like [true, false, true, true, true, true, true].

about 4 years ago · Juan Pablo Isaza Relatório
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