Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/193: Рейтинг темы: голосов - 193, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 07.10.2015
Сообщений: 37

Угадай число

22.10.2016, 22:39. Показов 36234. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число, для этого она называет некоторые множества натуральных чисел. Август отвечает Беатрисе YES, если среди названных ей чисел есть задуманное или NO в противном случае. После нескольких заданных вопросов Беатриса запуталась в том, какие вопросы она задавала и какие ответы получила и просит вас помочь ей определить, какие числа мог задумать Август.
Ввод: Первая строка входных данных содержит число n — наибольшее число, которое мог загадать Август. Далее идут строки, содержащие вопросы Беатрисы. Каждая строка представляет собой набор чисел, разделенных пробелами. После каждой строки с вопросом идет ответ Августа: YES или NO. Наконец, последняя строка входных данных содержит одно слово HELP.
Вывод: Вы должны вывести (через пробел, в порядке возрастания) все числа, которые мог задумать Август.
Пример:
Ввод:
10
1 2 3 4 5
YES
2 4 6 8 10
NO
HELP
Вывод:
1 3 5

Вопрос: пример работает, но при проверке падает на 5 тесте, какая-то проблема с циклом. Какая? Помогите, пожалуйста.
Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
file = open('input.txt', 'r')
text = file.readlines()
right = set()
for i in range(1,len(text)-1, 2):
    if text[i+1] == 'YES\n':
        for j in range(len(text[i].split())):
            if int(text[i].split()[j]) <= int(text[0]):
                right.add(text[i].split()[j])
    else:
        for j in range(len(text[i].split())):
            right.discard(text[i].split()[j])
arr = list(right)
arr.sort()
file = open('output.txt', 'w')
for i in arr:
    file.write(str(i+' '))
file.close()
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2016, 22:39
Ответы с готовыми решениями:

Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона
Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона. Диапазон и количество попыток пользователь вводит с ...

Реализовать игру «Угадай число», где в качестве игрока, угадывающего число, выступает компьютер
Игра «Угадай число» Реализовать игру «Угадай число», где в качестве игрока, угадывающего число, выступает компьютер. Дополнительная...

Угадай число
Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n. Беатриса пытается угадать это число, для этого она называет...

6
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
23.10.2016, 01:02
Del
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
23.10.2016, 10:29
Лучший ответ Сообщение было отмечено Mon4ik как решение

Решение

Mon4ik, вот код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
file = open('input.txt', 'r')
n = int(file.readline())
right = set(range(1, n + 1))
for line in file:
    if "YES" in line:
        right &= temp
    elif "NO" in line:
        right -= temp
    elif "HELP" not in line:
        temp = set(map(int, line.split()))
file.close()
file = open('output.txt', 'w')
file.write(' '.join(map(str, sorted(right))))
file.close()
Добавлено через 5 минут
Mon4ik, ваша проблема в том, что YES не расширяет, а тоже сужает множество. Т.е в случае
Code
1
2
3
4
1 2 3 4
YES
3 4 5 6
YES
у вас будет 1 2 3 4 5 6, а должно быть 3 4
4
1 / 1 / 0
Регистрация: 07.10.2015
Сообщений: 37
23.10.2016, 12:02  [ТС]
rattrapper, спасибо, все поняла
0
1 / 1 / 0
Регистрация: 24.10.2018
Сообщений: 1
24.10.2018, 02:21
Можно чуть короче и напрямую выводить результат

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
with open("input.txt", "r", encoding="utf8") as in_file:
 
    n = int(in_file.readline())
    Set_Nb = set(range(1, n + 1))
    temp = set()
 
    for line in in_file:
        if "YES" in line:
            Set_Nb &= temp
        elif "NO" in line:
            Set_Nb -= temp
        elif "HELP" not in line:
            temp = set(map(int, line.split()))
 
print(' '.join(map(str, sorted(Set_Nb))))
1
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
24.10.2018, 12:10
Цитата Сообщение от tossia Посмотреть сообщение
Можно чуть короче и напрямую выводить результат

Не по теме:

а можно и даже нужно оборачивать код в теги python чтоб можно было что то понять

0
 Аватар для Pavelpds
8 / 8 / 0
Регистрация: 26.01.2019
Сообщений: 35
26.01.2019, 16:52
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
n = int(input())
allNum = set(range(1, n + 1))
while True:
    quest = input()
    if quest == 'HELP':
        break
    quest = {int(x) for x in quest.split()}
    answer = input()
    if answer == 'YES':
        allNum &= quest
    if answer == 'NO':
        allNum -= quest
print(' '.join([str(x) for x in sorted(allNum)]))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2019, 16:52
Помогаю со студенческими работами здесь

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

Угадай число
Здравствуйте. Подскажите, пожалуйста, как можно оптимизировать мою программу по скорости ее выполнения: n=int(input()) ...

Угадай число
Здравствуйте, не могу определиться с ошибкой. Условие Август и Беатриса играют в игру. Август загадал натуральное число от 1 до n....

Угадай число
Составьте программу «Угадай число», но обратный вариант: пусть число загадал человек, а компьютер должен его отгадать за минимальное число...

Угадай число
Всем хорошего настроения! я ломлюсь в ряды программёров уже 4-й день :wall: фантазия бурная, а вот принять язык машин мой мозг ещё пока не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru