Рекурсивное чтение данных Python

Следующее будет иметь больше смысла, если вы когда-либо играли в Minecraft. Поскольку многие из вас этого не сделали, я постараюсь объяснить это как можно лучше.

Я пытаюсь написать рекурсивную функцию, которая может найти шаги для создания любого предмета Minecraft из плоского файла рецептов Minecraft. Это меня действительно поставило в тупик.

Плоский файл довольно длинный, поэтому я включил его в эту суть.

def getRecipeChain(item, quantity=1):
    #magic recursive stuffs go here

Итак, в основном мне нужно найти первый рецепт, затем найти рецепты для всех компонентов этого первого рецепта и так далее, пока вы не дойдете до предметов без рецептов. Каждый раз, когда мне нужно добавить рецепт в список, я получаю своего рода набор инструкций о том, в каком порядке создавать предметы.

Итак, вот функция, которая у меня есть сейчас (та, что не работает)

def getRecipeChain(name, quantity=1):
    chain = []

    def getRecipe(name1, quantity1=1):
        if name1 in recipes:
            for item in recipes[name1]["ingredients"]["input"]:
                if item in recipes:
                    getRecipe(item, quantity1)
                else:
                    chain.append(item)

    getRecipe(name, quantity)
    return chain

это идеальный результат, к которому я стремлюсь. Это словарь с названием предмета и его количеством.

>>> getRecipeChain("solar_panel", 1):
{"insulated_copper_cable":13, "electronic_circuit":2, "re_battery":1, "furnace":1, "machine":1, "generator":1, "solar_panel":1}

Итак, вопрос в том, как мне это сделать?

Я знаю, что просить, чтобы люди выполняли для вас работу, здесь осуждается, поэтому, если вы чувствуете, что это слишком похоже на то, что вы просто делаете кодирование для меня, просто скажите об этом.

5
задан giodamelio 7 March 2012 в 00:07
поделиться