Spaces:
Sleeping
Sleeping
Commit
·
0af5aa6
1
Parent(s):
51f075b
Update app.py
Browse files
app.py
CHANGED
|
@@ -396,7 +396,8 @@ def montar_treino(musculos_alvo, budget=45, objetivos=["hipertrofia"], lesoes=[]
|
|
| 396 |
"custo_total": custo_ex,
|
| 397 |
"custo_unit": variacao["custo"],
|
| 398 |
"video": variacao["video"],
|
| 399 |
-
"objetivo": objetivo_escolhido
|
|
|
|
| 400 |
})
|
| 401 |
custo_total += custo_ex
|
| 402 |
usados.add(ex["nome"])
|
|
@@ -437,22 +438,36 @@ def montar_treino(musculos_alvo, budget=45, objetivos=["hipertrofia"], lesoes=[]
|
|
| 437 |
obj_escolhido = random.choice(objetivos)
|
| 438 |
add_exercicio(ex, variacao, series=3, objetivo_escolhido=obj_escolhido)
|
| 439 |
|
| 440 |
-
#
|
| 441 |
-
|
| 442 |
-
|
| 443 |
-
for
|
| 444 |
-
if
|
| 445 |
-
|
| 446 |
-
if 2 <= v["custo"] <= 4:
|
| 447 |
-
candidatos.append((ex, v))
|
| 448 |
-
candidatos.sort(key=lambda x: x[1]["custo"], reverse=True)
|
| 449 |
|
| 450 |
-
|
| 451 |
-
|
| 452 |
-
|
| 453 |
-
|
| 454 |
-
|
| 455 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 456 |
|
| 457 |
# 🔹 Ordenar treino em ordem decrescente de custo_total (prioridade aos mais "pesados")
|
| 458 |
treino.sort(key=lambda x: x["custo_total"], reverse=True)
|
|
|
|
| 396 |
"custo_total": custo_ex,
|
| 397 |
"custo_unit": variacao["custo"],
|
| 398 |
"video": variacao["video"],
|
| 399 |
+
"objetivo": objetivo_escolhido,
|
| 400 |
+
"musculos": ex["musculos"]
|
| 401 |
})
|
| 402 |
custo_total += custo_ex
|
| 403 |
usados.add(ex["nome"])
|
|
|
|
| 438 |
obj_escolhido = random.choice(objetivos)
|
| 439 |
add_exercicio(ex, variacao, series=3, objetivo_escolhido=obj_escolhido)
|
| 440 |
|
| 441 |
+
# 3.5️⃣ Distribuir resto do budget de forma equilibrada entre músculos
|
| 442 |
+
mapa = {m: 0 for m in musculos_alvo}
|
| 443 |
+
for ex in treino:
|
| 444 |
+
for m in ex["musculos"]:
|
| 445 |
+
if m in mapa:
|
| 446 |
+
mapa[m] += 1
|
|
|
|
|
|
|
|
|
|
| 447 |
|
| 448 |
+
while custo_total < budget:
|
| 449 |
+
# Ordena músculos pelo número atual de exercícios
|
| 450 |
+
musculos_ordenados = sorted(mapa.items(), key=lambda x: x[1])
|
| 451 |
+
adicionou = False
|
| 452 |
+
|
| 453 |
+
for alvo, _ in musculos_ordenados:
|
| 454 |
+
candidatos = []
|
| 455 |
+
for ex in exercicios_validos:
|
| 456 |
+
if alvo in ex["musculos"] and ex["nome"] not in usados:
|
| 457 |
+
v = escolher_variacao(ex, lesoes)
|
| 458 |
+
if v and v["custo"] <= 4: # evitar só exercícios caros
|
| 459 |
+
candidatos.append((ex, v))
|
| 460 |
+
if candidatos:
|
| 461 |
+
# Pega o mais barato viável
|
| 462 |
+
candidatos.sort(key=lambda x: x[1]["custo"])
|
| 463 |
+
ex, variacao = candidatos[0]
|
| 464 |
+
obj_escolhido = random.choice(objetivos)
|
| 465 |
+
if add_exercicio(ex, variacao, series=3, objetivo_escolhido=obj_escolhido):
|
| 466 |
+
mapa[alvo] += 1
|
| 467 |
+
adicionou = True
|
| 468 |
+
break # vai para o próximo loop
|
| 469 |
+
if not adicionou:
|
| 470 |
+
break # não dá para adicionar mais nada
|
| 471 |
|
| 472 |
# 🔹 Ordenar treino em ordem decrescente de custo_total (prioridade aos mais "pesados")
|
| 473 |
treino.sort(key=lambda x: x["custo_total"], reverse=True)
|