Skip to content

Instantly share code, notes, and snippets.

@Songbird0
Created September 20, 2018 23:53
Show Gist options
  • Save Songbird0/a04ac99f792a557e7014d447bde6b2bc to your computer and use it in GitHub Desktop.
Save Songbird0/a04ac99f792a557e7014d447bde6b2bc to your computer and use it in GitHub Desktop.
# -*-coding: utf-8 -*-
# B la base de points du niveau actuel
# N = 19, le nombre de niveaux
# P, les points obtenus à l'instant T
# J, le nombre de jours de présence potentiellement effectués
# dans le futur.
# U, le facteur multiplicateur activé si l'utilisateur a assisté à la dernière réunion.
# C, le coefficient de proportionnalité commun à chaque base (B).
# R (inconnue), le nombre de jours restants à jouer pour être promu.
#
# Objectif: Estimer le nombre de jours restants avant une éventuelle promotion
# en fonciton des points déjà gagnés.
# Facteurs:
# - Présence quotidienne
# - Présence en réunion
N = 19
def expand(BU, C):
"""
BU: Base Universelle
C: Coefficient multiplicateur
"""
i = 0
rank_bar_list = []
while i < N:
if i == 0:
rank_bar_list.append(BU)
i += 1
continue
else:
length_of_rank_bar_list = len(rank_bar_list)
last_element = rank_bar_list[length_of_rank_bar_list - 1]
rank_bar_list.append(last_element + (last_element * C // 100))
i += 1
continue
return rank_bar_list
def build(rank_bar_list):
yield rank_bar_list[0], "GAV"
yield rank_bar_list[1], "Brigadier"
yield rank_bar_list[2], "Brigadier-Chef"
yield rank_bar_list[3], "Maréchal des Logis"
yield rank_bar_list[4], "Gendarme"
yield rank_bar_list[5], "Maréchal des Logis-Chef"
yield rank_bar_list[6], "Adjudant"
yield rank_bar_list[7], "Adjudant-Chef"
yield rank_bar_list[8], "Major"
yield rank_bar_list[9], "Sous-lieutenant"
yield rank_bar_list[10], "Lieutenant"
yield rank_bar_list[11], "Capitaine"
yield rank_bar_list[12], "Commandant"
yield rank_bar_list[13], "Lieutenant-Colonel"
yield rank_bar_list[14], "Colonel"
yield rank_bar_list[15], "Général de Brigade"
yield rank_bar_list[16], "Général de Division"
yield rank_bar_list[17], "Général de Corps d'Armée"
yield rank_bar_list[18], "Général d'Armée"
# [print(k, v) for k,v in ]
complete_list = build(expand(50, 50))
def estim(complete_list,
current_amount_of_points,
wanted_step,
interval = 5,
Q = 10):
"""
complete_list - La liste des grades avec leur pallier
current_amount_of_points - Le nombre actuel de points du joueur
wanted_step - Pallier désiré par le joueur, cette valeur devrait toujours être correcte
interval - Nombre de jours par semaine que le joueur
Q - Le montant quotidien de points distribués au joueur
"""
points_remaining = wanted_step - current_amount_of_points
days_remaining = points_remaining // Q
rank = {pts: rank_name for (pts, rank_name) in complete_list.items() if pts == wanted_step}
message = """
Vous avez actuellement {0} point(s).
Il vous reste {1} {2} avant d'atteindre le rang {3}.
""".format(
current_amount_of_points,
days_remaining,
"jour" if days_remaining <= 1 else "jours", rank[wanted_step])
print(message)
complete_list = {pts: rank_name for (pts, rank_name) in complete_list}
for (pts, rank) in complete_list.items():
print(pts, " pts: ", rank)
estim(complete_list, 81, 168)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment