Для Дня 2 вам дается список, каждый со своими правилами, и вас просят вернуть количество допустимых строк.

1-3 a: abcde
1-3 b: cdefg
2-9 c: ccccccccc

В приведенном примере вам даны три строки. Цифры до и после тире говорят вам, сколько раз следующая буква должна появиться в строке справа от двоеточия. В строке: 1-3 a: abcde буква a должна появляться от одного до трех раз в строке после двоеточия.

В приведенном выше примере ответ будет 2. В первой строке буква «a» встречается в строке от одного до трех раз. Во второй строке буква «b» вообще не появляется в строке и должна возвращать false. В третьей строке буква «c» встречается девять раз, что находится в пределах указанного лимита.

Если бы весь набор данных был передан в функцию как есть, он был бы передан в виде строки, и ее нужно было бы проанализировать. Чтобы проверить каждую отдельную строку на истинность, нам нужно будет использовать функцию .split (‘\ n’), чтобы разделить каждый фрагмент данных с помощью символа новой строки на его собственный индивидуальный фрагмент, к которому будет осуществляться доступ в массиве. В настоящее время наш код должен выглядеть примерно так:

function day2(str){
    const arr = str.split('\n')
}
day2('
1-3 a: abcde
1-3 b: cdefg
2-9 c: ccccccccc
')

При этом данные будут выглядеть примерно так:

console.log(arr)
// ['1-3 a: abcde','1-3 b: cdefg','2-9 c: ccccccccc']
// Where arr[0] = '1-3 a: abcde'

Теперь, когда мы можем получить доступ к каждой строке индивидуально, мы можем разбить каждую строку для анализа данных. Мы можем разделить каждый элемент на левую и правую части - шаблон и данные.

function day2(str){
    let counter = 0
    const arr = str.split('\n')
    for(let i = 0; i < arr.length; i++){
        let eachLine = arr[i].split(':')
        let pattern = eachLine[0]
        let data = eachLine[1]
    }
}

Просто взглянув на первую строку инструкций, которые нам предоставили, данные теперь выглядят примерно так:

//arr[0] = '1-3 a: abcde'
//eachLine = ['1-3 a','abcde']
//pattern = '1-3 a'
//data = abcde

Мы почти закончили, и нам просто нужно еще несколько функций .split (), чтобы преобразовать отдельные фрагменты данных в их собственные переменные. Окончательная версия должна выглядеть примерно так.

function day2(str){
    let counter = 0
    const arr = str.split('\n')
    for(let i = 0; i < arr.length; i++){
        let eachLine = arr[i].split(':')
        let smallBound = eachLine[0].split('-')        
        let bigBound = smallBound[1].split(' ')        
        let letter = bigBound[1]
        let count = 0
        for(let i = 0; i < arr[x].length; i++){
            if(splitStr[1][i] === letter){                
                count++            
            }
        }
    count >= smallBound[0] && count <= bigBound[0] ? counter++ : null
    }    
    return counter
}

После помещения каждой части данных в их отдельные переменные, проанализируйте правую часть строки и посчитайте и посмотрите, находится ли количество появлений между указанными числами. Вы должны сделать это для каждой строки и увеличить истинный счетчик, созданный наверху.