Форум » Логические выражения » №6479 » Ответить

№6479

Alex_R: (№ 6479) На числовой прямой даны три отрезка: P = [1381; 2165], Q = [369; 3894] и R = [2643; 3155]. Укажите наименьшую возможную длину такого отрезка A, что формула (¬((x ∈ Q) → ((x ∈ P) ∨ (x ∈ R)))) → (¬(x ∈ A) → ¬(x ∈ Q)) тождественно истинна, то есть принимает значение 1 при любом значении переменной х? Ответ: 3525 Я получаю 3 отрезка: [369.0; 1380.9] Длина 1012 [2165.1; 2642.9] Длина 478 [3155.1; 3893.9] Длина 739 Если брать отрезок от 369 до 3894, то длина как раз получится 3525... но у меня получаются разрывы на 3 отрезка. Посмотрите пожалуйста в чем ошибка? Код на Python: [pre2] p1, p2, q1, q2, r1, r2 = 1381, 2165, 369, 3894, 2643, 3155 P = {i / 10 for i in range(p1 * 10, p2 * 10 + 1)} Q = {i / 10 for i in range(q1 * 10, q2 * 10 + 1)} R = {i / 10 for i in range(r1 * 10, r2 * 10 + 1)} A = set() def f(x): return (not ((x in Q) <= ((x in P) or (x in R)))) <= ((x not in A) <= (x not in Q)) for x in [i / 10 for i in range(q1 * 10, q2 * 10 + 1)]: if not f(x): A.add(x) A = sorted(A) print(A) begin = 0 # Проверка на разрывы for i in range(1, len(A)): if round(A[ i ] - A[i - 1], 1) > 0.1: print("[{}; {}] Длина {}".format(A[begin], A[i - 1], round(A[i - 1]) - round(A[begin]))) begin = i print("[{}; {}] Длина {}".format(A[begin], A[i - 1], round(A[ i ]) - round(A[begin]))) [/pre2]

Ответов - 2

Alex_R: Смею предположить, что в задании опечатка и нужно найти НАИБОЛЬШУЮ длину отрезка... В таком случае все четко, получаем 3525.

Ж: Не думаю, что есть опечатка... Наибольшая длина отрезка м.б. любой: от -10000 до 10000 к примеру (20000 длиной). Требуется найти именно целый отрезок, покрывающий все ваши 3 отрезка. А минимальный такой отрезок - и есть отрезок от 369 до 3894.



полная версия страницы