Предполагая, что вы хотите решить эту проблему с помощью программы ... на самом деле довольно просто перебор, если у вас достаточно небольшой набор входных данных.Например, в этом случае у вас в основном есть 5 булевых переменных - независимо от того, является ли каждый рассказчиком правды.
Кодируйте операторы как тесты, а затем просматривайте все возможные комбинации, чтобы увидеть, какие из них являютсяvalid.
Это, очевидно, «глупое» решение, которое не сработает для больших входных наборов, но, скорее всего, его будет проще кодировать, чем полный механизм «рассуждения».Часто я нахожу, что вы можете делать намного меньше, принимая во внимание, с какой проблемой вы действительно столкнетесь:)