¿Cómo se calculan los puntos de clasificación para un desafío en CodeEval?

De acuerdo con https://www.codeeval.com/ranking/, la siguiente función que se utiliza para calcular la puntuación de cada envío es bastante fácil de entender.

def get_submission_score (score, memory_taken, time_taken, category):
“” ”
@param score: la puntuación que reciben los casos de prueba
@param memory_taken: memoria tomada por envío
@param time_taken: tiempo empleado por envío
Categoría @param: Fácil (1) / Moderado (2) / Difícil (3)
“” ”

total_max = {
1:35, # máx. 35 puntos por desafío fácil
2: 65, # max 65 puntos por desafío moderado
3: 100 # máx. 100 puntos para el desafío difícil
}
max_memory = 20 * 1024 * 1024 # 20 MB
max_time = 10 * 1000 # 10 segundos

# si el envío tarda más de 10 segundos
# o usa más de 20 MB de memoria
# la puntuación es 0
si memory_taken> max_memory o time_taken> max_time:
volver 0

max_total_score = total_max [categoría]

memory_factor = 1 – memory_taken / max_memory
time_factor = 1 – time_taken / max_time
factor = (memory_factor + time_factor) / 2

puntaje de retorno * max_total_score * factor / 100