Hello Tournament Winner es un desafío de algoritmo en el que, dada una matriz de pares que representan a los equipos que han competido entre sí y una matriz que contiene los resultados de cada competencia, se escribe una función que arroja el ganador del torneo.
Los resultados[i] indican el ganador de las competiciones[i], donde 1 en la matriz de resultados significa que ganó el equipo local y 0 significa que ganó el equipo visitante.
Este es mi código y pseudo-código hasta ahora:
function tournamentWinner(competitions, results) { let currentWinningTeam = ""; const scoreTracker = new Map(); scoreTracker.set(currentWinningTeam, 0); // since comeptitions and results have same length, use for loop to go through both of the arrays // they are in order of results to comeptitionns // use hash map to keep track of eachTeams points // final loop to find the team with the higest points for (const index in competitions) { const result = results[index]; // 0 0 1 // console.log(result); // ["HTML", "C#"] C# > HTML const [homeTeam, awayTeam] = competitions[index]; // console.log(index); // #C, Python, Python const teamWhoWon = result === 0 ? awayTeam : homeTeam; console.log(teamWhoWon) updateScores(teamWhoWon, 3, scoreTracker) console.log(scoreTracker) } return currentWinningTeam; } function updateScores(teamWhoWon, points, scoreTracker) { if (!scoreTracker.has(teamWhoWon)) { scoreTracker.set(teamWhoWon, 0) } else { scoreTracker.set(teamWhoWon, ) } } console.log( tournamentWinner( [ ['HTML', '#C'], ['#C', 'Python'], ['Python', 'HTML'], ], [0, 0, 1] ) );Tengo problemas para aumentar gradualmente los puntos del equipo en el mapa hash scoreTracker en mi función auxiliar updateScores(). No estoy muy familiarizado con los métodos de mapa y alguien puede mostrarme cómo puedo aumentar gradualmente los puntos de un equipo por puntos.
Puede obtener el recuento real con Map#get y, si es falso, como undefined , use cero en su lugar y agregue uno.
m.set(team, (m.get(team) || 0) + 1) const tournamentWinner = (competitions, results) => { return [...results.reduce((m, r, i) => (team => m.set(team, (m.get(team) || 0) + 1)) (competitions[i][+!r]), new Map)]; }; console.log(tournamentWinner([['HTML', '#C'], ['#C', 'Python'], ['Python', 'HTML']], [0, 0, 1]));