Mafia Logic Puzzle

I found this puzzle on the Russian QWERTY channel.

Five people sit around a table playing Mafia. Among them are two innocent people, two Mafiosos, and one detective. The Mafia people know each other; the detective knows who each of them is; and the innocent people have no information whatsoever about anyone at the table.

During this particular game, the innocents and the detective always tell the truth, while mafia people always lie. They start by going around the circle making the following statements:

  • A: I know who B is.
  • B: I know who the detective is.
  • C: I know who B is.
  • D: I know who E is.

Who is who?



  1. Drake Thomas:

    Solution (spoilers below):

    Note that A must not be innocent, since innocents know nothing and would truthfully state as such.

    B isn’t innocent, since an innocent wouldn’t have enough info from A’s statement to identify the detective (it would be consistent that A is a truth-telling detective or a lying mafia).

    B also isn’t mafia, since if they were then A would be the detective, but B would have known this fact as soon as A stated their knowledge and so would have lied about knowing who the detective was.

    Therefore B is the detective, and A is mafia.

    The above logic can be carried out by anyone at the table, so C’s statement tells us only that they’re truthful (hence an innocent).

    Similarly, anyone in D’s position knows who the remaining person is by process of elimination, so D is similarly innocent since they truthfully report their knowledge.

    So A,B,C,D,E are M,D,I,I,M respectively.

  2. Eric Carmody:

    A making an “I know” statement means he must be either a detective or a mafia, not an innocent. If he were the detective then he would know who B is, whether a mafia or innocent. B could not be innocent then because he wouldn’t know whether A was lying or telling the truth and so then B must be mafia. But if B were mafia then he would now know A is the detective and thus could not say he knows who the detective is (because he always lies). So then A must be a mafia, say mafia 1. Then A is lying and does not know who B is, so B is either innocent or detective. He makes an “I know” statement so he must be detective and thus makes the true statement that he knows the detective (himself). Anyone could have figured this out (as I did) so now even the innocents know that A is a mafia and B is the detective. Thus C does know who B is and since he is telling the truth, C must be an innocent. Now we know between D and E we have one mafia and one innocent, and so D knows what he himself is and thus knows what E is. So then the statement that D makes is true, meaning D is also an innocent, leaving E to be mafia 2. So:

    A – Mafia
    B – Detective
    C – Innocent
    D – Innocent
    E – Mafia

  3. Peance:

    A is not innocent. If A is detective, then B is not Mafia, for B knows A is telling truth and therefore A is detective, so B is telling truth, contradiction. But then B is not innocent, for B would not know whether A is lying or not. So A is Mafia. Now A doesn’t know who B is, so B is detective.
    Now everyone knows A is Mafia and B is detective. So C is telling truth, hence innocent. Now if D is Mafia, since D knows there are only two Mafia, D would immediately knows that E is innocent. But D says D knows who E is, so D is not Mafia.
    So E is Mafia.

    A – Mafia
    B – Detective
    C – Innocent
    D – Innocent
    E – Mafia

    Quite interesting, but once you write it down, it would be quite easy.

Leave a comment