Уведомления

Группа в Telegram: @pythonsu

#1 Июль 30, 2021 17:32:25

Vladimir_Galeta
Зарегистрирован: 2021-07-30
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Курс от ВШЭ. Простая задача. Помогите понять как она решается.

Добрый день.
Все было хорошо, но встал с одной задачей.

Тема: Логический тип данных и логические связки

Задача: Вася не смог попасть в магазин в Италии. Несмотря на удачно подобранное время посещения магазина в этот день в городе праздновался день броколетти (цветной капусты) и магазин был закрыт по случаю праздника. Зато Вася смог купить билет до Испании за сущие копейки. В Испании есть магазин, который открыт с A до B часов включительно. Испания - жаркая страна, поэтому с C до D часов включительно наступает сиеста, когда все заведения, включая магазин, закрыты. При этом A < B, C < D. Обратите внимание, что время сиесты не обязательно полностью содержится в интервале работы магазина. Вася может прийти в испанский магазин в X часов. Выведите True если магазин открыт в это время и False, если он закрыт.

Числа A, B, C, D, X вводятся по одному в строке и находятся в пределах от 0 до 23.

Как я вижу решение:
A = int(input())
B = int(input())
C = int(input())
D = int(input())
X = int(input())

q1 = A <= X < C and X < C or X > D and X < B
print(q1)

При загрузке в тестировщик пишет, что “код” скрытые тесты не прошел.

Подскажите, пожалуйста, что мне нужно изучить что бы понимать как решаются подобные задачи? Учебник по логике, алгебра логики, таблицы истинности? Что нужно освоить?

Офлайн

#2 Июль 31, 2021 04:56:14

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Курс от ВШЭ. Простая задача. Помогите понять как она решается.

Сначала нужно проверить, может ли он прийти в магазин вообще.
Если он не может прийти в магазин, то ответ уже известен и дальше проверять ничего не надо.
Если он может прийти в магазин, то нужно проверить, не находится ли он в паузе в этой.
Если он находится в паузе, то ответ известен.
Если он находится вне паузы, то ответ известен.

Сам сделаешь? Или тебе ещё подсказывать надо?

Vladimir_Galeta
Подскажите, пожалуйста, что мне нужно изучить что бы понимать как решаются подобные задачи? Учебник по логике, алгебра логики, таблицы истинности? Что нужно освоить?
Тебе надо освоить принцип “разделяй и властвуй”, который в программировании используется постоянно. В твоём решении видно, что ты всё смешал и делаешь всё сразу. А я предложил сначала проверить это, а потом проверить вот это, только если первая проверка оказалась недостаточной. Я разделил решение на отдельные этапы.



Отредактировано py.user.next (Июль 31, 2021 04:56:39)

Офлайн

#3 Июль 31, 2021 18:48:49

Vladimir_Galeta
Зарегистрирован: 2021-07-30
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Курс от ВШЭ. Простая задача. Помогите понять как она решается.

Большое спасибо за совет. Склоняю голову)

Если я правильно понял, то нужно не все в одну строчку писать, а делить по этапам или действиям. При этом, после каждого действия необходимо проверять. Я правильно понял?

А как выражается, может ли он вообще придти в магазин?

Офлайн

#4 Июль 31, 2021 21:37:06

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Курс от ВШЭ. Простая задача. Помогите понять как она решается.

Vladimir_Galeta
может ли он вообще придти в магазин?
Если в эти часы магазин открыт, то может придти в него. Если магазин закрыт, то не может

Офлайн

#5 Авг. 1, 2021 02:53:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Курс от ВШЭ. Простая задача. Помогите понять как она решается.

Vladimir_Galeta
Если я правильно понял, то нужно не все в одну строчку писать, а делить по этапам или действиям.
Не, оно пишется в одну строчку, но думается оно в виде вот этих отдельных этапов. Это замаскированная задача на два отрезка в одномерном пространстве.

  
>>> a, b, c, d, x = 1, 5, 3, 6, 4
>>> a <= x <= b and not c <= x <= d
False
>>>

Теперь дальше “как научиться так думать?”, - это алгоритмическое мышление. Для этого ты изучаешь, что такое алгоритм, как он устроен, где там вход, где выход, как идёт разбиение на шаги, какое предусловие стоит перед каждым шагом и какое постусловие стоит после каждого шага.

Так ты будешь понимать, что “если я проверил, могу ли я прийти в магазин, и понял, что я не могу прийти в магазин, потому что он не работает, то мне дальше не надо проверять, идёт ли сиеста, так как для шага проверки сиесты должно соблюдаться предусловие <магазин работает>”.



Отредактировано py.user.next (Авг. 1, 2021 02:59:02)

Офлайн

#6 Авг. 1, 2021 17:50:58

Vladimir_Galeta
Зарегистрирован: 2021-07-30
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Курс от ВШЭ. Простая задача. Помогите понять как она решается.

Большое спасибо за помощь. Получилось решить задачу. Много времени убил. Но благодаря вам решил. Еще раз спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version