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