понедельник, 10 августа 2020 г.

Рыцари и лжецы Python

 На острове Буяне жили N человек, каждый из которых был либо рыцарем либо лжецом, встали в круг. Рыцари говорят только правду, лжецы всегда только лгут. Каждому человеку в кругу задали вопрос: «Кто ты и кто твой сосед слева: рыцарь или лжец?» При этом каждый человек сказал, что он – рыцарь. А ответы всех людей о левом соседе были записаны в следующем формате: 1 – рыцарь 0 – лжец. Все ответы записаны в строку через пробел. Последний спрошенный человек отвечал на вопрос о первом.

Написать программу, которая по ответам жителей определяет, какое количество рыцарей заведомо присутствует в круге.

Входные данные

Первое число ( 1 < N ≤ 255 ) - количество жителей. Следующие N чисел (0 или 1), разделенных пробелами - ответы жителей.

Примеры

Вход

Выход

4  

0  1  0  1    

2


N = int(input())

A_zutel=[]
A_zutel.append(1)
A_otv = []
i=0
r=0
while i<=N-1: 
    A_otv.append(int(input()))
    if A_zutel[i]==1:
        if A_otv[i]==1:
            A_zutel.append(1)
            #A_otv[i]=1
            r+=1
        else:
             A_zutel.append(0)
             #A_otv=0    
    else:
         if A_otv[i]==0:
            A_zutel.append(1)
            #A_otv[i]=1
            r+=1
         else:
             A_zutel.append(0)
             #A_otv=0
    i+=1
if A_zutel[N-1]==1:
    if A_otv[N-1]==1:
        if A_zutel[0]==1:
            print('Возможно')
    else:
        print('Error')
else:
    if A_otv[N-1]==1:
        if A_zutel[0]==1:
             print('Error')
    else:
        print('Возможно')
print(r)
print(A_zutel[N-1])
print(A_otv[N-1])
print(A_zutel)
print(A_otv)

Комментариев нет:

Отправить комментарий