Я пытаюсь написать программу для решения этой игры . Вам не нужно проверять это на этот вопрос.
Дело в том, что есть 6 человек:
Капеллан, ChiefEngineer, MedicalDoctor, Клоун, робототехника, SecurityOfficer
Они разделяют следующие роли:
NukeOp, Facehugged, Киборг, Перевертыш и 2 х ОК
Моя идея - использовать факты в форме роли (человека), например
NukeOp (капеллан).
Вопрос в том, как мне создать правило, которое гласит, что если один человек играет определенную роль, тогда
- Тот же человек не имеет никакой другой роли; например, если NukeOp (капеллан), то не Facehugged (капеллан). (Примечание: я надеюсь, что больше не встретлю монстра-отрицателя! Или я должен создать возможные факты отрицания?)
- Та же роль не может быть взята у других; например, если NukeOp (капеллан), то не NukeOp (клоун). Исключение: есть два парня Ok (X), поэтому должно быть два значения для X в Ok (X), прежде чем Ok (X: любое другое значение, кроме этих двух) должно быть вычислено как ложное
Я хотел бы, если возможно, получить ответ, который приведет меня к правильному мышлению, не предоставляя полного решения, таким образом, получая удовольствие от моделирования и запоминания языка:)