Island of Logic |
The Island of Logic has three kinds of inhabitants: divine beings that always tell the truth, evil beings that always lie, and human beings that are truthful during the day and lie at night. Every inhabitant recognizes the type of every other inhabitant.
A social scientist wants to visit the island. Because he is not able to distinguish the three kinds of beings only from their looks, he asks you to provide a communication analyzer that deduces facts from conversations among inhabitants. The interesting facts are whether it is day or night and what kind of beings the speakers are.
I am [not] ( divine | human | evil | lying ).
is [not] ( divine | human | evil | lying ).
It is ( day | night ).
Square brackets [] mean that the word in the brackets may or may not appear, round brackets ()
mean that exactly one of the alternatives separated by |
must appear. X stands for some name from A, B, C,
D, E. There will be no two consecutive spaces in any statement line, and at most 50 statements
in a conversation.
The input is terminated by a test case starting with n = 0.
is ( divine | human | evil ).
It is ( day | night ).
X is to be replaced by a capital letter speaker name. Facts about inhabitants must be given first (in alphabetical order), then it may be stated whether it is day or night.
The output for each conversation must be followed by a single blank line.
1 A: I am divine. 1 A: I am lying. 1 A: I am evil. 3 A: B is human. B: A is evil. A: B is evil. 0
Conversation #1 No facts are deducible. Conversation #2 This is impossible. Conversation #3 A is human. It is night. Conversation #4 A is evil. B is divine.
In the fourth input example, it is obvious that A is lying since her two statements are contradictory. So, B can be neither human nor evil, and consequently must be divine. B always tells the truth, thus A must be evil. Voil‘a!