Придумайте несколько задач про игры на улице, которые решаются по этой схеме. Запишите решение к ожной из них
Ответы
Задача 1: На улице стоят N домов. Известно, что i-й дом покрашен в цвет Ci. Также известно, что между домами с одинаковым цветом есть прямая видимость. Определить, сколько домов с прямой видимостью у k-го дома.
Решение:
Для решения этой задачи нам необходимо создать массив цветов домов и массив индексов домов. Затем, для каждого дома, сравнить его цвет с цветами соседних домов. Если цвета совпадают, увеличиваем счетчик для индекса соседнего дома. После этого считаем количество элементов в массиве индексов с положительным значением. Это и будет ответом на задачу.
```
def solve(colors, k):
houses = [0] * len(colors)
for i in range(len(colors)):
if i != k:
if colors[i] == colors[k]:
houses[k] += 1
else:
houses[i] += 1
return houses.count(i for i in houses if i > 0)
```
В этом решении мы создали два массива - один для хранения цветов домов, а другой для подсчета количества видимых домов. Затем мы проходимся по каждому дому, сравнивая его цвет с цветом соседних домов.
Если цвет совпадает, мы увеличиваем счетчик видимых домов для этого индекса. В конце мы возвращаем количество домов, которые видны с текущего дома.