Содержание
Advent of Code 2017 День 1
Часть 1
- Циклические списки с самого начала!
- Написание моего рабочего алгоритма
Циклические списки с самого начала!
- Я знал, что эта тема повторялась в течение всего года.
- Но я не знал, что она началась с первого дня.
Написание моего рабочего алгоритма
Набросок моего алгоритма
Split the input into an array of numbers
For each number
Accumulate a sum, starting a 0
If the next number (wrapping if necessary) is the same number
Increment the sum by the number at the current index
Otherwise, increment the sum by 0...leaving it unchanged
reduce()
, который использует все возможные параметры:
return input
.split('')
.map(Number)
.reduce((acc, curr, index, RA) =>
acc += RA[index] == RA[(index + 1) % RA.length]
? curr : 0
, 0)
Часть 2
Корректировка моего рабочего алгоритма
Вместо того чтобы проверять следующий индекс, я буду проверять индекс через половину списка.
Набросок моего алгоритма
Split the input into an array of numbers
For each number
Accumulate a sum, starting a 0
If the number half a list length away (wrapping if necessary) is the same number
Increment the sum by the number at the current index
Otherwise, increment the sum by 0...leaving it unchanged
Небольшая корректировка числа, добавляемого к index
, и вуаля!
return input
.split('')
.map(Number)
.reduce((acc, curr, index, RA) =>
acc += RA[index] == RA[(index + (RA.length / 2)) % RA.length]
? curr : 0
, 0)
Я сделал это!!!
- Я решил обе части!
- Используя один длинный оператор, состоящий из цепочки методов массива!
- Где обе части отличаются только одним операндом!
Год в обзоре
Поскольку я работал в обратном порядке, сегодня я впервые увидел эту анимацию:
Эта статическая карта должна показать, для каких головоломок я сделал симуляторы:
- 21 день с двумя звездами! Новый личный рекорд!
- 4 однозвездочных дня! Новый личный рекорд!
- 0 беззвездных дней! Новый личный рекорд!
- Построено 8 тренажеров! Ничья с 2018 годом по наименьшему количеству.
- Тонны созданных GIF… многие из которых помогли мне решить головоломку!
Это был взрывной 2017 год!