Первое задание «Светофор»

Напишите объект светофор с методами toRed, toGreen, toYellow и state. Методы to\* переводят светофор в определённое состояние. Метод state возвращает состояние светофора. Для задания интервалом горения цветов используется конфиг произвольного формата.

Светофор должен подписаться на событие tram, которое говорит о том, что не раньше чем через 3000 мс подъедет трамвай и необходимо к этому времени переключить светофор на зеленый. При приближении трамвая светофор должен гореть зеленым не менее 10000 мс, чтобы трамвай успел проехать. После проезда трамвая необходимо вернуть светофор обратно в исходное состояние.

Бонусные задания:

  • Вернуть светофор в исходное состояние так, как будто бы трамвай не проезжал
  • Адекватный возврат в исходное состояние: например, если исходное состояние было "красный" и осталось гореть 5 секунд, то возвращаться в него не стоит