На 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 }