На 6-й день вам дается строка символов, которая представляет ответ «Да» на вопрос, помеченный одним символом. Существует 26 возможных вопросов, так как в алфавите одинаковое количество букв.

Во входных данных каждый человек представлен в новой строке, а каждая группа представлена ​​с дополнительным пробелом между входными данными. Например, если мы посмотрим на образцы данных:

abc

a
b
c

ab
ac

a
a
a
a

b

Поскольку буквы расположены в одиннадцати строках, одиннадцать человек разделены на пять разных групп. Цель состоит в том, чтобы найти общее количество «Да» для каждой группы, не считая повторяющихся «Да». Если это звучит сбивающе с толку, приношу свои извинения и объясню ниже.

abc
Group 1 has 1 person saying yes to 3 unique questions
Total = 3
a
b
c
Group 2 has 3 people saying to yes 3 unique questions
Total = 3
ab
ac
Group 3 has 2 people saying yes to 3 unique questions
Total = 3
a
a
a
a
Group 4 has 4 people saying yes to 1 unique question
Total = 1
b
Group 5 has 1 person saying yes to 1 unique question
Total = 1

После получения суммы для каждой группы верните сумму всех итогов во входных данных. Учитывая данные образца, число, которое я ищу, будет 3 + 3 + 3 + 1 + 1 = 11.

Первое, что мы хотим сделать, это проанализировать данные и разделить их на группы.

function day6(input){
    let groups = input.split('\n\n')
}
//groups[0] = "abc"
//groups[1] = "a,
               b,
               c"
//...

Если мы посмотрим на образцы данных, то увидим, что вопрос касается подсчета уникальности писем группы.

Group 1:
abc
"abc" => Check if each character is unique and then return the length
Group 2:
a
b
c
"abc" => Check if each character is unique and then return the length
Group 3:
ab
ac
"abac" => "abc" => 3
Group 4:
a
a
a
a
"aaaa" => "a" => 1
Group 5:
b
"b" => 1

Что мы можем использовать здесь, так это Set, поскольку добавление повторяющихся букв не будет работать, поскольку оно уже проверяет уникальность.

function day6(input){
    let groups = input.split('\n\n')
    let set = new Set()
    for(let group of groups){
        for(let i = 0; i < group.length; i++){
            set.add(group[i])
        }
    }
}

Проходя эту строку за строкой, для каждой отдельной группы мы анализируем каждую букву и добавляем ее в созданный нами набор. Например, если бы мы добавили стену букв, самый длинный набор был бы длиной 26 символов.

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

function day6(input){
    let groups = input.split('\n\n')
    let set = new Set()
    let total = 0
    for(let group of groups){
        for(let i = 0; i < group.length; i++){
            set.add(group[i])
        }
        total += set.size
    }
    return total
}