Advent of code

 14 décembre 2015 

  Reindeer Olympics :
  1. code.py
  2. codeObjets.py
N = 2503
rennes = [
    ['Rudolph', 22, 8, 165],
    ['Cupid', 8, 17, 114],
    ['Prancer', 18, 6, 103],
    ['Donner', 25, 6, 145],
    ['Dasher', 11, 12, 125],
    ['Comet', 21, 6, 121],
    ['Blitzen', 18, 3, 50],
    ['Vixen', 20, 4, 75],
    ['Dancer', 7, 20, 119],
]

def dist(secondes, vitesse, tempsCourse, tempsRepos):
    tempsCycle = tempsCourse + tempsRepos
    nbCycles = secondes // tempsCycle
    reste = min(tempsCourse, secondes % tempsCycle)
    return (nbCycles * tempsCourse + reste) * vitesse


# Partie 1
results = [(dist(N, *renne[1:]), renne[0]) for renne in rennes]
results.sort(reverse=True)
print(results)


# Partie 2
scores = len(rennes) * [0]

for second in range(1, N+1):
    results = [(dist(second, *rennes[i][1:]), i) for i in range(len(rennes))]  
    results.sort(reverse=True)
    maxScore = results[0][0]
    # print(results, maxScore)
    for i in range(len(rennes)):
        if results[i][0] == maxScore:
            scores[results[i][1]] += 1
        else:
            break
    
scores.sort(reverse=True)
print(scores)