На числовой прямой даны два отрезка: и
. Найдите наименьшую возможную длину отрезка
, при котором формула
тождественно истинна, то есть принимает значение 1 при любом значении переменной .
Решение руками:
Упростим выражение, раскрыв импликацию:
Найдем случаи, когда выражение ложно. Для этого сделаем отрицание известной части и посмотрим, где оно дает истину:
Отсюда следует, что инверсия дает истину когда x принадлежит одновременно и P, и Q. То есть, в этих ситуациях исходное выражение ложно, значит нужно подобрать такой отрезок A , чтобы «перекрыть» эту часть. Это будет отрезок . Значит, наименьшая длина
.
Решение программой:
# функция, которая проверяет, принадлежит ли x отрезку
def F(start, end, x):
if start <= x <= end:
return True
else:
return False
lens = []
# левая граница искомого отрезка
for a in range(1, 500+1):
# правая граница искомого отрезка
for b in range(a, 500+1):
f = 0
for x in range(1, 1000):
if ((F(10, 32, x) and not(F(a, b, x))) <= (not(F(18, 45, x)))) == False:
f = 1
break
if f == 0:
# добавляем длину отрезка в массив
lens.append(b-a)
print(min(lens))