Цветные карандаши

Представьте, что у вас есть полоска квадратиков, которые нужно закрасить разными цветами в соответствии с заданным паттерном. Квадратики нужно закрашивать последовательно, т. е. если следующий квадрат другого цвета, вам нужно поменять карандаш.

Напишите функцию, которая будет принимать список цветов 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))
python books logo

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

×