Advent of code

 14 décembre 2015 

  Reindeer Olympics :
  1. code.py
  2. codeObjets.py
class Renne:
    positionPremier = 0
    premiers = []

    def __init__(self, nom, vitesse, tempsCourse, tempsRepos):
        self.nom = nom
        self.vitesse = vitesse
        self.tempsCourse = tempsCourse
        self.tempsRepos = tempsRepos

        self.position = 0
        self.enCourse = True
        self.tempsActivite = 0

        self.score = 0

    def avancerUneSeconde(self):
        self.tempsActivite += 1

        if self.enCourse:
            self.position += self.vitesse
            if self.position >= Renne.positionPremier:
                if self.position > Renne.positionPremier:
                    Renne.positionPremier = self.position
                    Renne.premiers = [self]
                else:
                    Renne.premiers.append(self)
            if self.tempsActivite >= self.tempsCourse:
                self.enCourse = False
                self.tempsActivite = 0
        else:
            if self.tempsActivite >= self.tempsRepos:
                self.enCourse = True
                self.tempsActivite = 0

    def getPosition(self):
        return self.position

    def givePoint(self):
        self.score += 1
    def getScore(self):
        return self.score

    def __repr__(self):
        return self.nom + " en pos " + str(self.position)  + " avec " + str(self.score) + " pt" + (self.score > 1 and 's' or '')   


N = 2503
input = [
    ['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],
]

rennes = []
for renne in input:
    rennes.append(Renne(*renne))

for second in range(N):
    for renne in rennes:
        renne.avancerUneSeconde()
    for renne in Renne.premiers:
        renne.givePoint()

# print(rennes)

rennes.sort(key=Renne.getPosition, reverse=True)
print("Partie 1: " + str(rennes[0]) + " => " + str(rennes[0].getPosition()))

rennes.sort(key=Renne.getScore, reverse=True)
print("Partie 2: " + str(rennes[0]) + " => " + str(rennes[0].getScore()))