Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Прогромирование пайтон помогит ерешить

Dyoma Dyoma Ученик (29), открыт 1 день назад
используя elfi and if
А Вы знаете, как работает светофор? Пожалуй, что каждый школьник знаком с этим устройством, но не каждый точно может описать алгоритм его работы. Если сомневаетесь, то спросите себя: «Сколько раз мигает зеленый сигнал светофора?».

Рассмотрим самый обычный вертикальный автомобильный светофор, состоящий из трех секций для индикации (сверху вниз) красного, желтого и зеленого сигналов. Напомним его функционал. Каждая секция может отражать два цвета: соответствующий ей цвет во включенном состоянии и черный цвет в выключенном состоянии. Когда светофор исправен, то ему доступно 6 возможных состояний. В обычном рабочем режиме мы имеем следующий алгоритм работы:

горит только зеленый сигнал;
зеленый сигнал мигает;
гаснет зеленый, загорается желтый;
гаснет желтый, загорается красный;
загорается желтый и горит вместе с красным;
гаснут желтый и красный и все повторяется с пункта 1.
Еще следует не забывать о том, что светофор может работать в режиме нерегулируемого перекрестка, когда присутствует только желтый мигающий сигнал.

По текущей индикации сигналов светофора следует определить его следующее состояние, в которое он должен перейти, либо определить, что светофор неисправен.

Входные данные
Входной файл INPUT.TXT содержит в трех строках описание текущего состояния светофора. Первая строка описывает верхнюю секцию, вторая – среднюю, третья – нижнюю. Состояние каждой из секций определяется ее цветом: black (черный), red (красный), yellow (желтый) и green (зеленый). Если некоторый цвет мигает, то его название записывается в верхнем регистре, иначе – в нижнем.

Выходные данные
В выходной файл OUTPUT.TXT выведите ответ на задачу в том же формате, если светофор исправен. В случае неисправности светофора выведите «error».

Примеры
black black
black green black black GREEN
2 black
YELLOW
black black
YELLOW
black
3 red
yellow
green error
1 ответ
Егор Всемогущий Ученик (157) 1 день назад
red = "red"
yellow = "yellow"
green = "green"
black = "black"

def solve():
state = []
for i in range(3):
state.append(input())

def get_next_state(current_state):
r, y, g = current_state

if g == GREEN and r == black and y == black:
return [black, black, "YELLOW"]
elif g == "YELLOW" and r == black and y == black:
return [black, YELLOW, black]
elif g == black and r == black and y == YELLOW:
return [red, black, black]
elif g == black and r == red and y == black:
return [red, YELLOW, black]
elif g == black and r == red and y == YELLOW:
return [black, black, GREEN]
elif g == black and r == black and y == "YELLOW":
return [black, black, "YELLOW"]
else:
return "error"

next_state = get_next_state(state)
if next_state == "error":
print("error")
else:
for s in next_state:
print(s)


solve()
Похожие вопросы