Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/env python
- from math import floor
- # tous les temps sont en secondes apres minuit le 1er avril 2014
- BEGIN_TIME = 0 # debut de la djoque
- INTERMEDIARY_TIME = 8 * 60 * 60 # temps du changement de regime
- CAP_TIME = 21 * 60 * 60 # temps auquel on arrête d'augmenter
- END_TIME = 24 * 60 * 60 # fin de la djoque
- # toutes ces donnees doivent etre les vraies (prises dans la vraie DB au moment ou le script est execute)
- REGISTRATION_CAP = 1000 # vrai maximum d'inscriptions
- REGISTRATION_NUM = 500 # vrai nombre actuel d'inscrits
- PREREGISTRATION_NUM = 875 # vrai nombre actuel de preinscrits
- REGISTRATION_CAP = 1000 # nombre maximum d'inscrits (vraie valeur)
- INTERMEDIARY_CAP = floor(REGISTRATION_CAP * 0.81) # fake nombre d'inscrits au moment du changement de regime (INTERMEDIARY_TIME)
- CHEAT_CAP = floor(REGISTRATION_CAP * 0.96) # fake nombre d'inscrits total a la fin de la journee
- # Le mega fonction qui va bien
- def get_reg_totals(sec):
- # initialisations qui vont bien
- preregistered = PREREGISTRATION_NUM
- registered = REGISTRATION_NUM
- int_reg_num = min(REGISTRATION_NUM, INTERMEDIARY_CAP) # protection si le nombre d'inscrits reel depasse le cap intermediaire avant l'heure
- # La magie des maths
- if sec < INTERMEDIARY_TIME:
- registered = sec * (INTERMEDIARY_CAP - int_reg_num)/(INTERMEDIARY_TIME - BEGIN_TIME) + int_reg_num
- elif sec < CAP_TIME:
- registered = (sec - INTERMEDIARY_TIME) * (CHEAT_CAP - INTERMEDIARY_CAP)/(CAP_TIME - INTERMEDIARY_TIME) + INTERMEDIARY_CAP
- elif sec < END_TIME:
- registered = CHEAT_CAP
- else:
- preregistered = PREREGISTRATION_NUM
- registered = REGISTRATION_NUM
- preregistered = preregistered + registered - REGISTRATION_NUM # Le nombre de preinscrits depend simplement du vrai et du faux nombre d'inscrits
- # si par magie les vrais nombres de (pre)inscrits depasse notre fakage, on a tout prevu
- preregistered = max(PREREGISTRATION_NUM, preregistered)
- registered = max(REGISTRATION_NUM, registered)
- # plus qu'a retourner des nombres entiers et on a tout fini =D
- return (int(preregistered), int(registered))
- # petits exemples (pour chaque heure de la journee)
- for i in range(0,25):
- print(i, get_reg_totals(i * 60 * 60))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement