OK, I’ve got all of the voting data from this past Day in now, and it’s good news. The full results:
Telcontar AllWalker Chronos Imaginary Fiend Meeko USCDiver pedescribe Scuba Ben Zeriel ShadowFacts Jimmy Chitwood storyteller cardinal_fang
Telcontar AllWalker Chronos Imaginary Fiend Meeko USCDiver pedescribe Scuba Ben Zeriel ShadowFacts Jimmy Chitwood storyteller cardinal_fang
Telcontar AllWalker Chronos Imaginary Fiend Meeko USCDiver pedescribe Scuba Ben Zeriel ShadowFacts Jimmy Chitwood storyteller cardinal_fang
Telcontar AllWalker Chronos Imaginary Fiend Meeko USCDiver pedescribe Scuba Ben Zeriel ShadowFacts Jimmy Chitwood storyteller cardinal_fang
Telcontar AllWalker Chronos Imaginary Fiend Meeko USCDiver pedescribe Scuba Ben Zeriel ShadowFacts Jimmy Chitwood storyteller cardinal_fang
Total number of possibilities: 5
Telcontar 1
AllWalker 0
Chronos 0
Imaginary Fiend 0
Meeko 0
USCDiver 1
pedescribe 0
Scuba Ben 2
Zeriel 5
ShadowFacts 5
Jimmy Chitwood 3
storyteller 0
cardinal_fang 3
Of particular note: If Telcontar is Scum, then so is cardinal_fang. And if USCDiver is Scum, then so is Jimmy Chitwood. And at least one of cardinal_fang or Jimmy Chitwood is Scum, regardless. If this is correct (as I believe it is), then we’re now in a position where we can definitely catch both Scum, with at most one more mislynch.
To re-iterate my method: I am assuming that a greater proportion of votes cast by Town are for Scum than are votes cast by Scum, and throwing out all scenarios which are not consistent with that. I did not include any data from the day ShadowFacts was lynched, since a unanimous vote carries essentially no information.
The full code:[spoiler]
[noparse]#include <stdio.h>
#define n_players 13 /* Number of players under analysis */
#define max_scum 4 /* Maximum expected number of Scum */
#define min_scum 4 /* Minimum expected number of Scum */
#define scum_votes 15 /* Number of Scum votes cast so far */
main()
{
int players[n_players]; /* Stores the alignment of each player. 0 = Town, 1 = Scum */
unsigned int players_binary;
unsigned int players_binary_shifting;
char names[n_players][20] = {"Telcontar", "AllWalker", "Chronos", "Imaginary Fiend", "Meeko", "USCDiver", "pedescribe", "Scuba Ben", "Zeriel", "ShadowFacts", "Jimmy Chitwood", "storyteller", "cardinal_fang"};
int n_scum;
int buses; /* Number of times Scum voted for Scum */
int attacks; /* Number of times Town voted for Scum */
int i;
int score[n_players];
int total_scenarios = 0;
int town_votes;
for(i=0;i<n_players;i++) score* = 0; /* Initialize everyone's score */
for(players_binary=0; players_binary < 8192; players_binary++) {
players_binary_shifting = players_binary;
for(i=0;i<n_players;i++) {
players* = players_binary_shifting & 1; /* Populate the players[] array according to the value of players_binary */
players_binary_shifting = players_binary_shifting >> 1;
}
n_scum = 0;
buses = 0;
attacks = 0;
for(i=0;i<n_players;i++) {
if(players* == 1) n_scum++; /* Count the number of Scum */
}
/* Count number of votes cast by Town */
town_votes = 8; // Ichini, Tom, Nanook, and Oredigger cast 8 votes
if(!players[0]) town_votes += 9; // Telcontar cast 9 votes
if(!players[1]) town_votes += 6; // AllWalker cast 6 votes
if(!players[2]) town_votes += 8; // Chronos cast 8 votes
if(!players[3]) town_votes += 2; // Imaginary Fiend cast 2 votes
if(!players[4]) town_votes += 12; // Meeko cast 12 votes
if(!players[5]) town_votes += 5; // USCDiver cast 5 votes
if(!players[6]) town_votes += 5; // pede cast 5 votes
if(!players[7]) town_votes += 9; // Scuba_Ben cast 9 votes
if(!players[8]) town_votes += 6; // Zeriel cast 6 votes
if(!players[9]) town_votes += 6; // ShadowFacts cast 6 votes
if(!players[10]) town_votes += 5; // Jimmy cast 5 votes
if(!players[11]) town_votes += 7; // storyteller cast 7 votes
if(!players[12]) town_votes += 5; // cardinal_fang cast 5 votes
/* Count number of buses-- Only counting final votes */
if(players[0] && players[3]) buses++; // Telcontar voted for Fiend
if(players[3] && players[9]) buses++; // Fiend voted for ShadowFacts
if(players[4] && players[5]) buses++; // Meeko voted for BillMC/USCDiver
if(players[4] && players[12]) buses++; // Meeko voted for cardinal_fang
if(players[5] && players[4]) buses++; // USCDiver voted for Meeko
if(players[5] && players[2]) buses++; // USCDiver voted for Chronos
if(players[6] && players[3]) buses++; // pede voted for Fiend
if(players[8] && players[1]) buses++; // Zeriel voted for AllWalker
if(players[9] && players[7]) buses++; // ShadowFacts voted for Scuba_Ben
if(players[10] && players[6]) buses++; // Jimmy Chitwood voted for pede
if(players[10] && players[2]) buses++; // Jimmy Chitwood voted for Chronos
if(players[12] && players[3]) buses++; // cardinal_fang voted for Fiend
if(players[12] && players[2]) buses++; // cardinal_fang voted for Chronos
if(players[0] && players[6]) buses++; // Telcontar voted for pede
if(players[1] && players[7]) buses++; // AllWalker voted for Scuba
if(players[5] && players[2]) buses++; // USCDiver voted for Chronos
if(players[8] && players[2]) buses++; // Zeriel voted for Chronos
if(players[10] && players[2]) buses++; // Jimmy voted for Chronos
if(players[12] && players[2]) buses++; // cardinal_fang voted for Chronos
if(players[0] && players[8]) buses++; // Telcontar voted Zeriel
if(players[2] && players[8]) buses++; // Chronos voted Zeriel
if(players[4] && players[8]) buses++; // Meeko voted Zeriel
if(players[5] && players[8]) buses++; // USCDiver voted Zeriel
if(players[7] && players[5]) buses++; // Scuba voted USCDiver
if(players[8] && players[5]) buses++; // Zeriel voted USCDiver
if(players[10] && players[8]) buses++; // Jimmy voted Zeriel
if(players[11] && players[5]) buses++; // storyteller voted USCDiver
if(players[12] && players[5]) buses++; // cardinal_fang voted USCDiver
/* Count number of attacks-- End of day */
if(!players[0] && players[3]) attacks++; // Telcontar voted for Fiend
if(!players[3] && players[9]) attacks++; // Fiend voted for ShadowFacts
if(!players[4] && players[5]) attacks++; // Meeko voted for BillMC/USCDiver
if(!players[4] && players[12]) attacks++; // Meeko voted for cardinal_fang
if(!players[5] && players[4]) attacks++; // USCDiver voted for Meeko
if(!players[5] && players[2]) attacks++; // USCDiver voted for Chronos
if(!players[6] && players[3]) attacks++; // pede voted for Fiend
if(!players[8] && players[1]) attacks++; // Zeriel voted for AllWalker
if(!players[9] && players[7]) attacks++; // ShadowFacts voted for Scuba_Ben
if(!players[10] && players[6]) attacks++; // Jimmy Chitwood voted for pede
if(!players[10] && players[2]) attacks++; // Jimmy Chitwood voted for Chronos
if(!players[12] && players[3]) attacks++; // cardinal_fang voted for Fiend
if(!players[12] && players[2]) attacks++; // cardinal_fang voted for Chronos
if(players[3]) attacks += 2; // Tom Scud and Nanook (known Town) voted Fiend
if(players[11]) attacks++; // Ichini (known Town) voted storyteller
if(players[2]) attacks++; // Oredigger (known Town) voted Chronos
if(!players[0] && players[6]) attacks++; // Telcontar voted for pede
if(!players[1] && players[7]) attacks++; // AllWalker voted for Scuba
if(!players[5] && players[2]) attacks++; // USCDiver voted for Chronos
if(!players[8] && players[2]) attacks++; // Zeriel voted for Chronos
if(!players[10] && players[2]) attacks++; // Jimmy voted for Chronos
if(!players[12] && players[2]) attacks++; // cardinal_fang voted for Chronos
if(!players[0] && players[8]) attacks++; // Telcontar voted Zeriel
if(!players[2] && players[8]) attacks++; // Chronos voted Zeriel
if(!players[4] && players[8]) attacks++; // Meeko voted Zeriel
if(!players[5] && players[8]) attacks++; // USCDiver voted Zeriel
if(!players[7] && players[5]) attacks++; // Scuba voted USCDiver
if(!players[8] && players[5]) attacks++; // Zeriel voted USCDiver
if(!players[10] && players[8]) attacks++; // Jimmy voted Zeriel
if(!players[11] && players[5]) attacks++; // storyteller voted USCDiver
if(!players[12] && players[5]) attacks++; // cardinal_fang voted USCDiver
/* Count number of buses-- Withdrawn votes */
/* if(players[0] && players[6]) buses++; // Telcontar voted for pede
if(players[1] && players[4]) buses++; // AllWalker voted for Meeko
if(players[2] && players[3]) buses++; // Chronos voted for Fiend
if(players[4] && players[6]) buses++; // Meeko voted for pede
if(players[4] && players[10]) buses++; // Meeko voted for Jimmy
if(players[4] && players[3]) buses++; // Meeko voted for Fiend
if(players[5] && players[1]) buses++; // USCDiver voted for AllWalker
if(players[6] && players[2]) buses++; // pede voted for Chronos
if(players[6] && players[4]) buses++; // pede voted for Meeko
if(players[7] && players[9]) buses++; // Scuba voted for Shadowfacts
if(players[7] && players[8]) buses++; // Scuba voted for Zeriel
if(players[9] && players[0]) buses++; // Shadow voted for Telcontar
if(players[10] && players[3]) buses++; // Jimmy voted for Fiend
if(players[11] && players[2]) buses++; // storyteller voted for Chronos
if(players[12] && players[6]) buses++; // cardinal_fang voted for pede
if(players[0] && players[11]) buses++; // Telcontar voted for storyteller
if(players[2] && players[11]) buses++; // Chronos voted for storyteller
if(players[4] && players[5]) buses++; // Meeko voted for USCDiver
if(players[4] && players[7]) buses++; // Meeko voted for Scuba
if(players[7] && players[2]) buses++; // Scuba voted for Chronos
if(players[7] && players[11]) buses++; // Scuba voted for storyteller
if(players[9] && players[7]) buses++; // Shadow voted for Scuba
*/
/* Count number of attacks-- Withdrawn votes */
if(!players[0] && players[6]) attacks++; // Telcontar voted for pede
if(!players[1] && players[4]) attacks++; // AllWalker voted for Meeko
if(!players[2] && players[3]) attacks++; // Chronos voted for Fiend
if(!players[4] && players[6]) attacks++; // Meeko voted for pede
if(!players[4] && players[10]) attacks++; // Meeko voted for Jimmy
if(!players[4] && players[3]) attacks++; // Meeko voted for Fiend
if(!players[5] && players[1]) attacks++; // USCDiver voted for AllWalker
if(!players[6] && players[2]) attacks++; // pede voted for Chronos
if(!players[6] && players[4]) attacks++; // pede voted for Meeko
if(!players[7] && players[9]) attacks++; // Scuba voted for Shadowfacts
if(!players[7] && players[8]) attacks++; // Scuba voted for Zeriel
if(!players[9] && players[0]) attacks++; // Shadow voted for Telcontar
if(!players[10] && players[3]) attacks++; // Jimmy voted for Fiend
if(!players[11] && players[2]) attacks++; // storyteller voted for Chronos
if(!players[12] && players[6]) attacks++; // cardinal_fang voted for pede
if(players[4]) attacks += 2; // Tom Scud and Oredigger (known Town) voted Meeko
if(!players[0] && players[11]) attacks++; // Telcontar voted for storyteller
if(!players[2] && players[11]) attacks++; // Chronos voted for storyteller
if(!players[4] && players[5]) attacks++; // Meeko voted for USCDiver
if(!players[4] && players[7]) attacks++; // Meeko voted for Scuba
if(!players[7] && players[2]) attacks++; // Scuba voted for Chronos
if(!players[7] && players[11]) attacks++; // Scuba voted for storyteller
if(!players[9] && players[7]) attacks++; // Shadow voted for Scuba
if(!players[0] && players[5]) attacks++; // Telcontar voted USCDiver
if(!players[0] && players[7]) attacks++; // Telcontar voted Scuba
if(!players[2] && players[10]) attacks++; // Chronos voted Jimmy
if(!players[4] && players[2]) attacks++; // Meeko voted Chronos
if(!players[4] && players[5]) attacks++; // Meeko voted USCDiver
if(!players[8] && players[10]) attacks++; // Zeriel voted Jimmy
if((min_scum<=n_scum) && (n_scum<=max_scum)) /* Throw out cases with wrong number of Scum */
if((attacks)*scum_votes > (buses)*town_votes) /* Throw out cases with Scum not voting Scummily */
/* Add other assumptions (delete or add any considered appropriate) */
if(players[2] == 0) /* Assume Chronos Town */
if(players[4] == 0) /* Assume Meeko Town */
if(players[3] == 0) /* Fiend was Town */
if(players[1] == 0) /* AllWalker was Town */
if(players[11] == 0) /* AllWalker breadcrumbed storyteller */
if(players[6] == 0) /* pede was Jack */
if(players[9] == 1) /* Shadow was Scum */
if(players[8] == 1) /* What if? */
{
total_scenarios++;
/* Output all scenarios */
for(i=0;i<n_players;i++) {
if(players* == 0) printf("%s ",names*);
if(players* == 1) {
printf("%s ",names*);
score*++;
}
}
printf("
");
}
}
/* Output scores */
fprintf(stderr,"Total number of possibilities: %d
",total_scenarios);
for(i=0;i<n_players;i++) fprintf(stderr,"%s %d
",names*,score*);
return(0);
}[/noparse]
[/spoiler]