Представьте, что у вас есть полоска квадратиков, которые нужно закрасить разными цветами в соответствии с заданным паттерном. Квадратики нужно закрашивать последовательно, т. е. если следующий квадрат другого цвета, вам нужно поменять карандаш.
Напишите функцию, которая будет принимать список цветов cols
и возвращать время (в секундах), необходимое для закрашивания всего паттерна. При этом:
- на смену карандаша уходит 1 секунда
- на закрашивание квадратика уходит 2 секунды
Пример с пояснением
color_pattern_times(["Red", "Blue", "Red", "Blue", "Red"]) ➞ 14 # Тут 5 цветов. На закрашивание уйдет по 2 с на каждый (2 x 5 = 10). # Карандаш придется сменить 4 раза, каждая смена займет секунду (1 x 4 = 4). # 10 + 4 = 14
Примеры
color_pattern_times(["Blue"]) ➞ 2 color_pattern_times(["Red", "Yellow", "Green", "Blue"]) ➞ 11 color_pattern_times(["Blue", "Blue", "Blue", "Red", "Red", "Red"]) ➞ 13
Примечание: если подряд идут два одинаковых цвета, карандаш менять не придется.
Варианты решения
def color_pattern_times(cols): changes = sum(a != b for a, b in zip(cols, cols[1:])) return changes + len(cols)*2
def color_pattern_times(cols): return len(cols)*2 + sum(i != j for i, j in zip(cols[1:], cols))