4
$\begingroup$

You've barely got back from the isolated villa where your last case was, when you hear that you are needed again:

There is a group of people on board a yacht. The wealthy owner and her spouse have been brutally murdered. You have been sent to collect statements from each person.
- Each person in the group is either guilty or innocent.
- Each person is either friends or not friends with each other person. The friendship is mutual.
- Each guilty person is friends with every other guilty person.
- Each innocent person has witnessed a number of events, which allows them to deduce the innocence or guilt of a number of people in the group. This may or may not have been reciprocated.
- The guilty people know who the guilty and innocent parties are.
- Each person is either boastful or modest (to be explained below).

The statements that each person makes are as follows:
- Innocent modest people will simply make a list of truthful statements.
- Innocent boastful people will do the same, but will also make a statement about a random other person about whom they know nothing. If the person is their friend, they will say s/he is innocent. Otherwise they'll just say something (innocent or guilty at random).
- Guilty modest people will say that friends are innocent (regardless of whether they are); they will say that non-friends are guilty (which is inaccurate, because their non-friends are innocent by the above definitions).
- Guilty boastful people will do the same. But they will also make one truthful statement (either that one of their guilty friends is guilty or that one of their innocent non-friends is innocent).

This situation seems all too common these days...

On this particular day, you go out to the island and get to sit down with the main characters:
Apolonia, Luisa, Belkis, Buck, Berenice, Lenny, Christoper, Madonna, Christopher, Sherry, Nicki, Terrance, Ashely, Mamie, Laurice, Darron, Ezequiel, Gale, Nancee, and Cammie

Statements of Apolonia:
- I am innocent
- Ezequiel is guilty
- Mamie is guilty
- Laurice is guilty
- Lenny is innocent
- Buck is innocent
- Cammie is guilty
- Christopher is innocent
- Darron is guilty
- Berenice is innocent
- Ashely is innocent

Statements of Luisa:
- I am innocent
- Terrance is innocent
- Ashely is innocent
- Apolonia is innocent
- Darron is guilty
- Mamie is guilty
- Nicki is innocent
- Madonna is innocent

Statements of Belkis:
- I am innocent
- Nicki is innocent
- Madonna is innocent
- Ezequiel is guilty
- Apolonia is innocent
- Terrance is innocent

Statements of Buck:
- I am innocent
- Nicki is innocent
- Christoper is innocent
- Laurice is guilty
- Lenny is innocent
- Madonna is innocent
- Terrance is innocent
- Belkis is innocent
- Ezequiel is guilty

Statements of Berenice:
- I am innocent
- Laurice is guilty
- Belkis is innocent
- Terrance is innocent
- Luisa is innocent
- Sherry is innocent
- Nancee is guilty
- Ashely is innocent
- Darron is guilty

Statements of Lenny:
- I am innocent
- Terrance is innocent
- Luisa is innocent
- Buck is innocent
- Nicki is innocent
- Sherry is innocent
- Ashely is innocent

Statements of Christoper:
- I am innocent
- Buck is innocent
- Madonna is innocent
- Mamie is guilty
- Luisa is innocent
- Berenice is innocent
- Christopher is innocent
- Ezequiel is guilty
- Laurice is guilty
- Nicki is innocent

Statements of Madonna:
- I am innocent
- Luisa is innocent
- Christoper is innocent
- Sherry is innocent
- Buck is innocent
- Belkis is innocent
- Christopher is innocent
- Cammie is guilty
- Ashely is innocent
- Lenny is innocent

Statements of Christopher:
- I am innocent
- Nicki is innocent
- Buck is innocent
- Terrance is innocent
- Gale is guilty
- Christoper is innocent
- Lenny is innocent
- Apolonia is innocent
- Luisa is innocent

Statements of Sherry:
- I am innocent
- Madonna is innocent
- Terrance is innocent
- Ezequiel is guilty
- Ashely is innocent
- Laurice is guilty
- Christopher is innocent
- Lenny is innocent
- Belkis is innocent
- Cammie is guilty

Statements of Nicki:
- I am innocent
- Mamie is guilty
- Laurice is guilty
- Christoper is innocent
- Madonna is innocent
- Luisa is innocent
- Nancee is guilty
- Apolonia is innocent
- Lenny is innocent
- Gale is guilty

Statements of Terrance:
- I am innocent
- Christopher is innocent
- Christoper is innocent
- Mamie is guilty
- Ezequiel is guilty
- Sherry is innocent
- Apolonia is innocent

Statements of Ashely:
- I am innocent
- Christoper is innocent
- Belkis is innocent
- Apolonia is innocent
- Cammie is innocent
- Laurice is guilty
- Terrance is innocent
- Buck is innocent
- Christopher is innocent
- Nancee is guilty
- Berenice is innocent
- Gale is guilty

Statements of Mamie:
- I am innocent
- Cammie is innocent
- Belkis is guilty
- Nicki is guilty
- Gale is innocent
- Laurice is innocent
- Sherry is guilty

Statements of Laurice:
- I am innocent
- Mamie is innocent
- Madonna is guilty
- Gale is innocent
- Ashely is guilty
- Nicki is guilty
- Apolonia is guilty
- Sherry is guilty
- Cammie is innocent
- Berenice is guilty
- Terrance is guilty

Statements of Darron:
- I am innocent
- Mamie is innocent
- Christopher is guilty
- Nicki is guilty
- Lenny is guilty
- Belkis is innocent
- Sherry is innocent
- Ashely is guilty
- Gale is innocent
- Buck is guilty

Statements of Ezequiel:
- I am innocent
- Ashely is guilty
- Buck is guilty
- Christopher is guilty
- Darron is innocent
- Madonna is guilty
- Nancee is innocent
- Gale is innocent
- Christoper is guilty
- Sherry is guilty

Statements of Gale:
- I am innocent
- Ashely is guilty
- Madonna is innocent
- Mamie is innocent
- Christoper is innocent
- Laurice is innocent
- Apolonia is guilty
- Berenice is guilty
- Nicki is guilty
- Christopher is innocent

Statements of Nancee:
- I am innocent
- Terrance is guilty
- Ezequiel is innocent
- Darron is guilty
- Nicki is guilty
- Apolonia is guilty
- Christoper is guilty
- Belkis is innocent

Statements of Cammie:
- I am innocent
- Mamie is innocent
- Apolonia is innocent
- Berenice is innocent
- Gale is innocent
- Lenny is innocent
- Ezequiel is innocent

As before, we believe that there must be the fewest possible collaborators...

$\endgroup$
3
$\begingroup$

We have the following statements by the people. Red is 'innocent', blue is 'guilty' and green is no statement. Statements by a single person are given as a row in the matrix.

enter image description here

Given that we are looking for a minimum collaborators solution, we may use a majority decision procedure.

By this rule, we can first conclude that Apolonia is innocent, which gives Ezequiel, Mamie, Laurice, Cammie and Darron as suspects. We don't know which type of truthteller she is.

Moreover, Ezequiel is a suspect and everything points to that he has committed the murder.

Continuing this reasoning, we have a list of suspects:

  • Ezequiel
  • Mamie
  • Laurice
  • Cammie
  • Darron
  • Nancee

We can see that in this group, the statements diverge from the statments the rest of the group. Gale is not in the group by majority decision, but most statements are given by people in the suspect group. By inverting the statements of the suspect group, we obtain the following:

enter image description here

Therefore, we find that Gale is also guilty. So the group of guilty people are

  • Ezequiel
  • Mamie
  • Laurice
  • Cammie
  • Darron
  • Nancee
  • Gale

I believe this is the minimal solution. The discrepancies are due to that some people are boastful.

As a side note, I wrote the following code to parse the data and make it more overlookable:

import numpy
import matplotlib.pyplot as plt

f = open("statements.txt",'r')
count = f.read().count("Statements")
f.seek(0)

mapping = {}
people = []
people_counter = 0
truth_matrix = numpy.zeros((count,count)) # truth adjaceny matrix
#suspects = ['Mamie','Ezequiel','Laurice','Cammie','Nancee','Darron']

for line in f:
    if line[0:10] == "Statements":
        person = line.split()[2][0:-1]
        if person not in mapping:
            mapping[person] = people_counter
            people.append(person)
            people_counter += 1
    if line[0:1] == "-":
        subject = line.split()[1]
        if subject == "I":
            subject = person
        if subject not in mapping:
            mapping[subject] = people_counter
            people.append(subject)
            people_counter += 1
        mult = 1
        #if person in suspects: mult = -1
        if line.split()[3] == "innocent":
            truth_matrix[mapping[person],mapping[subject]] = 100*mult
        else:
        truth_matrix[mapping[person],mapping[subject]] = -100*mult

plt.xticks(range(len(people)), people, rotation='vertical')
plt.yticks(range(len(people)), people)
plt.imshow(truth_matrix, interpolation='nearest')
plt.show()

I hope you do not feel that it ruins the fun of the problems :-)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.