def minimax(matrix): candidates = list(matrix.keys()) worst_defeats = {} for candidate in candidates: worst_defeat = float('inf') for opponent in candidates: if candidate != opponent: margin = matrix[opponent][candidate] - matrix[candidate][opponent] worst_defeat = min(worst_defeat, -margin) worst_defeats[candidate] = worst_defeat return max(worst_defeats, key=worst_defeats.get)