Обозначим за П значение утверждения "Петя ел", за В - значение утверждения "Вася ел", а за М значение утверждения "Маша ела".
Первое Петино высказывание: "Я не ел". Значение этого высказывания противоположно П. Действительно, если П равно 1, то Петя ел варенье, тогда первое Петино утверждение неверно; если же П равно 0, то Петя не ел варенье, значит, Петя сказал правду.
Таким образом, значение первого Петиного высказывания равно
Аналогичными рассуждениями можно показать, что значения второго Петиного высказывания и первого Васиного высказывания равны , второго Васиного высказывания равно П, второго Машиного высказывания равно В.
Осталось оценить первое утверждение Маши: "Вася врет". Оно означает, что Васино высказывание неверно, то есть что выражение (П) ложно. Получается, что значение первого Машиного утверждения равно значению выражения
Составим таблицу истинности для высказываний всех детей:
Объяснение:
Петя ел ел Вася ел Маша ела Петины утверж
Вас утверины
Машины утвержд.
П В М
П
В
0 0 0 1 1 1 0 1 0
0 0 1 1 0 0 0 1 0
0 1 0 1 1 1 0 1 1
0 1 1 1 0 0 0 1 1
1 0 0 0 1 1 1 0 0
1 0 1 0 0 0 1 1 0
1 1 0 0 1 1 1 0 1
1 1 1 0 0 0 1 1 1
Нас интересуют те варианты значений П, В и М, при которых два ребенка сказали правду, а третий - один раз соврал, а один раз сказал правду. Такие варианты соответствуют тем строкам таблицы, которые имеют пять единиц и один ноль в шести последних колонках.
Таких строк в таблице только одна (третья), соответствующая значениям П = 0, В = 1, М == 0.
За П мы обозначили значение утверждения "Петя ел". П = 0 означает, что это утверждение ложно, то есть Петя не ел варенье.
В = 1 означает, что утверждение "Вася ел" истинно, то есть Вася ел варенье.
М = О означает, что утверждение "Mania ела" ложно, то есть Маша не ела варенье.
Получается, что условие задачи (2 ребенка сказали правду, а третий один раз соврал) выполняется только для ситуации, в которой Петя и Маша не ели варенье, а Вася ел.
ответ. Варенье ел Вася, так как только при одном (третьем) варианте возможных значений ответ двоих - 1 и 1, а ответ одного - 0 и 1.
Python:
class book:
def __init__(self, author, name, date):
self.author = author
self.name = name
self.date = date
def print(self):
print(self.name, self.author, self.date)
book1 = book("абоба", "математика 8 класс", 1951)
book2 = book("абоба", "информатика 8 класс", 1992)
book3 = book("абоба", "математика 10 класс", 1991)
book4 = book("абоба1", "математика 10 класс", 1994)
book5 = book("абоба1", "информатика 10 класс", 1955)
book6 = book("абоба1", "информатика 11 класс", 1993)
book7 = book("абоба", "физика 8 класс", 1952)
book8 = book("абоба", "информатика 8 класс", 1871)
book9 = book("абоба1", "физика 8 класс", 1951)
book10 = book("абоба1", "физика 8 класс", 1971)
library = [book1, book2, book3, book4, book5, book6, book7, book8, book9, book10]
# a
author = "абоба" # автор, книги которого ищем
print("а)")
for i in range(len(library)):
if library[i].author == author and library[i].date >= 1960:
print(library[i].name)
# б
print("б)")
for i in range(len(library)):
for k in library[i].name.split():
if k == 'информатика':
library[i].print()
# в
print("в)")
for i in range(len(library) - 1):
for j in range(i + 1, len(library)):
if library[i].author == library[j].author and library[i].name == library[j].name:
library[i].print()
library[j].print()