Задача «Угадай число»

Условие

Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число, для этого она называет некоторые множества натуральных чисел. Август отвечает Беатрисе YES, если среди названных ей чисел есть задуманное или NO в противном случае. После нескольких заданных вопросов Беатриса запуталась в том, какие вопросы она задавала и какие ответы получила и просит вас помочь ей определить, какие числа мог задумать Август.

В первой строке задано n — максимальное число, которое мог загадать Август. Далее каждая строка содержит вопрос Беатрисы (множество чисел, разделенных пробелом) и ответ Августа на этот вопрос.

Вы должны вывести через пробел, в порядке возрастания, все числа, которые мог задумать Август.

 

Решение

  1. n = int(input())
  2. all_nums = set(range(1, n + 1))
  3. possible_nums = all_nums
  4. while True:
  5.     guess = input()
  6.     if guess == 'HELP':
  7.         break
  8.     guess = {int(x) for x in guess.split()}
  9.     answer = input()
  10.     if answer == 'YES':
  11.         possible_nums &= guess
  12.     else:
  13.         possible_nums &= all_nums - guess
  14. print(' '.join([str(x) for x in sorted(possible_nums)]))