Compare commits

...

2 Commits

2 changed files with 48 additions and 8 deletions

View File

@ -1,10 +1,12 @@
def expand_recipe(recipe, recipes):
global expanded ; expanded = {}
def expand_recipe(recipe, recipes, main = False):
global expanded
ok = False
part = 1 # Одна часть
while not ok:
ok = True
min_vol = 0 # Объём мин. рецепта (вход)
# Перебираем элементы
for el in recipe:
# Если составное
@ -16,24 +18,35 @@ def expand_recipe(recipe, recipes):
expanded = {}
break
else:
expand_recipe(recipes[el].comps, recipes)
min_vol += expand_recipe(recipes[el].comps, recipes)
else:
if el in expanded:
expanded[el] += recipe[el]*part
else:
expanded[el] = recipe[el]*part
min_vol += recipe[el]*part
if main:
return expanded, min_vol, part
else:
return min_vol
def calc(element, amount, recipes):
# TODO: Пока только выводит расширенную версию рецепта
# Получаем характеристику элемента
recipe, out = recipes[element].comps, recipes[element].out
# Расчитываем минимальный рецепт
expanded, vol, part = expand_recipe(recipe, recipes, True)
global expanded
expanded = {}
expand_recipe(recipe, recipes)
# Домнажаем на сколько нужно
need = amount//vol
for i in expanded:
expanded[i] = expanded[i]*need
out = part*out*need
return expanded
return expanded, out
from parse import *
#print( load_recipes() )
print( calc('Dylovene', 100, load_recipes()) )
print( calc('Leporazine', 100, load_recipes()) )

View File

@ -29,3 +29,30 @@ def load_recipes(url = 'https://raw.githubusercontent.com/SerbiaStrong-220/space
out = value
recipes[product] = reag__(category=category, comps=comps, out=out)
return recipes
def localize(ftl = parse_ftl()):
recipes = load_recipes()
for k, v in list(recipes.items()):
for word in ftl:
if k.lower() == word:
new_key = ftl[word].capitalize()
recipes[new_key] = recipes.pop(k)
for k1, v1 in list(recipes[new_key].comps.items()):
for word1 in ftl:
if k1.lower() == word1:
new_key1 = ftl[word1]
recipes[new_key].comps[new_key1] = recipes[new_key].comps.pop(k1)
else:
try:
for k1, v1 in list(recipes[k].comps.items()):
for word1 in ftl:
if k1.lower() == word1:
new_key1 = ftl[word1].capitalize()
recipes[k].comps[new_key1] = recipes[k].comps.pop(k1)
except:
for k1, v1 in list(recipes[new_key].comps.items()):
for word1 in ftl:
if k1.lower() == word1:
new_key1 = ftl[word1].capitalize()
recipes[new_key].comps[new_key1] = recipes[new_key].comps.pop(k1)
return recipes