Задача на логику. Разберёмся по дням недели.
Дни и члены:
Сергей лжет по понедельникам, четвергам и воскресеньям; говорит правду по вторникам, средам, пятницам, субботам. STruth(d) = правда в этот день; ложь в остальные дни. Ложь: Mon(0), Thu(3), Sun(6). Истина: Tue(1), Wed(2), Fri(4), Sat(5).
Олег лжёт по вторникам, средам и пятницам; говорит правду по понедельникам, четвергам, субботам, воскресеньям. OTruth(d) = правда в этот день; ложь в остальные дни. Ложь: Tue(1), Wed(2), Fri(4). Истина: Mon(0), Thu(3), Sat(5), Sun(6).
Утверждения:
- Сергей говорит: «Вчера я говорил правду».
- Олег говорит: «А я вчера лгал».
Проверяем по дням (Yesterday = предыдущий день):
- Понедельник
- STruth(Пн) = ложь; Yesterday(S) = STruth(Вск) = ложь. Он должен лгать сегодня, и его высказывание ложно. Это подходит.
- OTruth(Пн) = истина; Yesterday(O) = OTruth(Вск) = истина. Он должен говорить правду сегодня, но утверждение «я вчера лгал» ложно (вчера он говорил правду). противоречие. Значит, понедельник исключаем.
- Вторник
- STruth(Вт) = истина; Yesterday(S) = STruth(Пн) = ложь. Требуется, чтобы сегодня говорил правду, но «вчера я говорил правду» ложно. Не подходит.
- Среда
- STruth(Ср) = истина; Yesterday(S) = STruth(Вт) = истина. Сегодня говорит правду, и вчера говорил правду — подходит.
- OTruth(Ср) = ложь; Yesterday(O) = OTruth(Вт) = ложь. Он должен лгать сегодня, и «я вчера лгал» ложно (перед ним вчера он лгал). Это противоречие: если он лжёт сегодня, его высказывание должно быть ложным, но Y_O = ложь означает, что он вчера говорил правду, следовательно «я вчера лгал» было бы ложью. В любом случае противоречие. Значит, среда исключаем.
- Четверг
- STruth(Чт) = ложь; Yesterday(S) = STruth(Ср) = истина. Сегодня он лжёт, но сказал бы ложь, если вчера говорил правду — противоречие. Исключаем.
- Пятница
- STruth(Пт) = истина; Yesterday(S) = STruth(Чт) = ложь. Сегодня говорит правду, но утверждение о вчерашней правде ложно. Не подходит.
- Суббота
- STruth(Сб) = истина; Yesterday(S) = STruth(Пт) = истина. Сегодня говорит правду, и вчера говорил правду — подходит.
- OTruth(Сб) = истина; Yesterday(O) = OTruth(Пт) = ложь. Сегодня говорит правду, и «я вчера лгал» истинно (вчера он лгал). Всё согласуется.
- Воскресенье
- STruth(Вс) = ложь; Yesterday(S) = STruth(Сб) = истина. Сегодня лжём, а вчера говорил правду — противоречие. Исключаем.
Единственный оставшийся день: суббота (Сб). Ответ:
- День событий: суббота.
- Сегодня оба говорили правду: Сергей сказал правду, Олег сказал правду.
- Дополнительное уточнение по вчерашним действиям: вчера (пятница) Сергей говорил правду, а Олег лгал.