Skip to content

Instantly share code, notes, and snippets.

@freshlogic
Last active March 17, 2025 02:57
coders-bracket-2025.js
const teams = require('./2025.json');
const percentages = {
round1: { 1: 100, 2: 94, 3: 85, 4: 78, 5: 68, 6: 66, 7: 60, 8: 48, 9: 52, 10: 40, 11: 34, 12: 35, 13: 22, 14: 15, 15: 6, 16: 0 },
round2: { 1: 87, 2: 69, 3: 61, 4: 56, 5: 52, 6: 51, 7: 27, 8: 18, 9: 8, 10: 46, 11: 38, 12: 49, 13: 24, 14: 12, 15: 14, 16: 0 },
round3: { 1: 79, 2: 72, 3: 50, 4: 35, 5: 21, 6: 33, 7: 37, 8: 70, 9: 40, 10: 33, 11: 33, 12: 5, 13: 0, 14: 0, 15: 0, 16: 0 },
round4: { 1: 59, 2: 46, 3: 47, 4: 72, 5: 75, 6: 23, 7: 0, 8: 57, 9: 50, 10: 0, 11: 60, 12: 0, 13: 0, 14: 0, 15: 0, 16: 0 },
round5: { 1: 57, 2: 48, 3: 64, 4: 23, 5: 50, 6: 67, 7: 0, 8: 50, 9: 0, 10: 0, 11: 0, 12: 0, 13: 0, 14: 0, 15: 0, 16: 0 },
round6: { 1: 67, 2: 33, 3: 44, 4: 33, 5: 0, 6: 50, 7: 0, 8: 50, 9: 0, 10: 0, 11: 0, 12: 0, 13: 0, 14: 0, 15: 0, 16: 0 }
};
function predictWinner(game, team1, team2) {
let lowerSeededTeam = team1;
let higherSeededTeam = team2;
if (team1.seed === team2.seed) {
lowerSeededTeam = (team1.net_ranking < team2.net_ranking) ? team1 : team2;
higherSeededTeam = (lowerSeededTeam === team1) ? team2 : team1;
} else if (team2.seed < team1.seed) {
lowerSeededTeam = team2;
higherSeededTeam = team1;
} else {
lowerSeededTeam = team1;
higherSeededTeam = team2;
}
let percentage = percentages['round' + game.round][lowerSeededTeam.seed];
// 3-point percentage
percentage += (lowerSeededTeam.three_point_percentage - higherSeededTeam.three_point_percentage) * 1.5;
// Free Throw Rate (FTA/FGA)
if (lowerSeededTeam.free_throw_rate && higherSeededTeam.free_throw_rate) {
percentage += (lowerSeededTeam.free_throw_rate - higherSeededTeam.free_throw_rate) * 1.4;
}
// Defensive rebound percentage
percentage += (lowerSeededTeam.defensive_rebound_percentage - higherSeededTeam.defensive_rebound_percentage) * 1.3;
// Turnover rate (negative adjustment since fewer turnovers are better)
percentage += (higherSeededTeam.turnover_percentage - lowerSeededTeam.turnover_percentage) * -1.2;
const random = Math.random() * 100;
if (random <= percentage) {
return lowerSeededTeam; // lower seed advances
} else {
return higherSeededTeam; // higher seed advances
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment