Python

Информатика. Питон. Помогите найти ошибку

Задача с Решу ЕГЭ
На числовой прямой даны два отрезка: D  =  [17; 58] и C  =  [29; 80]. Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение

(x ∈ D) → ((¬(x ∈ C)∧ ¬(x ∈ A)) → ¬(x ∈ D))

истинно (т. е. принимает значение 1) при любом значении переменной х.
Написал код
 d = {17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58} 
c = {29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80}
for a in range(10,30):
k=0
for x in range(0,100):
if (x in d)
Зачем программистам математика? Затем, чтобы не писать программы, если можно решить задачу явно. Все предложенные ответы в любом случае делают предварительные предположения (диапазон проверяемых значений a и x), хотя в условии явно сказано, что для любого x, даже для -123456,789. Ну а если делаете предварительные предположения, почему бы просто не решить задачу аналитически?

Используем формулу A → B = ¬A ∨ B и преобразуем исходное выражение:
 (x ∈ D) → ((¬(x ∈ C)∧ ¬(x ∈ A)) → ¬(x ∈ D))
¬(x ∈ D) ∨ ((¬(x ∈ C)∧ ¬(x ∈ A)) → ¬(x ∈ D))
¬(x ∈ D) ∨ (¬(¬(x ∈ C)∧ ¬(x ∈ A))∨ ¬(x ∈ D))
¬(x ∈ D) ∨ ((x ∈ C)∨(x ∈ A))∨ ¬(x ∈ D))
¬(x ∈ D) ∨ (x ∈ C) ∨ (x ∈ A)
Последнее выражение очевидно истинно, если истинно любое из выражений. Поскольку C и D заданы, нам надо такое A, чтобы третье выражение было истинно, если первые два ложны, то есть если истинно
 ¬(¬(x ∈ D) ∨ (x ∈ C))
(x ∈ D) ∧ ¬(x ∈ C)
Очевидно, что минимальным A будет D \ C = [17; 29) но поскольку по условию требуется отрезок, то придётся добавить правый конец: A = [17; 29], длина этого отрезка равна 12.
Александр Ожерельев
Александр Ожерельев
12 091
Лучший ответ
Нахрен переписывать все числа, если можно было через цикл for сделать?

Любое значение x значит, что x может принимать и отрицательные значения.

Твоя программа не способна находить длину, а лишь конкретные значения.
Ni
Nikolai
16 653
Ернияз Удреев Как я только все числа в алфавит не вписывал. На её работу это не влияет.
Ернияз Удреев Да, мне и нужны конкретные значения. Потом найти длину руками не проблема
Nikolai Мне кажется, что это задание в принципе проще решить руками полностью. Если знаешь, как упрощать выражение
# заданные отрезки
D = range(17, 59)
C = range(29, 81)

# функция для проверки истинности логического выражения
def is_true(A):
for x in range(17, 81):
if (x in D) and (not(x in C) and not(x in A)) and (x in D):
return False
return True

# поиск наименьшей возможной длины отрезка A
for length_A in range(0, 63):
for start_A in range(17, 81 - length_A + 1):
A = range(start_A, start_A + length_A)
if is_true(A):
print(“Ответ:”, length_A)
exit()
Юнадик Хасаев Поздравляю твой код работает неверно. Он просто перебирает числа от 0 до 62
d = set(range(17, 59))
c = set(range(29, 81))

for a in range(10, 30):
k = 0
for x in range(0, 100):
if (x in d) <= (((x not in c) and (x != a)) <= (x not in d)):
k += 1
if k == 100:
print(a)

В этой версии кода используются множества (set) для представления отрезков d и c, что улучшает эффективность проверки наличия элементов в них. Основная логика остается такой же. Мы проверяем каждое значение x от 0 до 99 и подсчитываем, сколько раз логическое выражение истинно для каждого значения a в диапазоне от 10 до 29. Если выражение истинно для всех значений x, выводим значение a.
ML
Mixa Lev
1 354
Ернияз Удреев вывод по прежнему пуст(
Ернияз Удреев у тебя что-нибудь выводит?
Алексей Рожков Вот, тут всё было хорошо
Алексей Рожков угу. я вывел все значения х и а, при которых формула не выполняется
Пито́ны (лат. Pythonidae) — семейство неядовитых змей[1]. В настоящее время насчитывается 9 родов и 41 вид [2]. В более узком смысле питоны — представители рода Python (настоящие питоны).
Kairat Atashev
Kairat Atashev
558
Kairat Atashev Идиот — в Древней Греции гражданин полиса, живущий в отрыве от общественной жизни, не участвующий в общем собрании граждан полиса и иных формах государственного и общественного демократического управления.