Problema de cabezas de monstruos en Python
-
29-10-2019 - |
Pregunta
Dos armas A y B deben usarse para matar a un monstruo (con N cabezas). Cuando se usa Gun A, corta 6 cabezas, pero si el monstruo no muere (no de cabezas> 0), crecerá 3 cabezas. Cuando se usa la pistola B corta 4 cabezas, pero si el monstruo no muere, crece 2 cabezas. Si n <(no. De las cabezas puede cortar la pistola), en ese caso la pistola no se puede usar. Y si n = -1, tanto el monstruo como el cazador mueren.
El problema requiere descubrir si es posible matar al monstruo, si el cazador muere tratando de matar al monstruo y al camino más corto.
He escrito el siguiente programa Python para resolver el problema anterior:
def A(heads, path):
if heads < -1:
path = []
return "Impossible to kill"
heads -= 6
path.append("A")
if heads == 0:
print path
path = []
return "Monster dies"
if heads == -1:
return "Both monster and human die"
heads += 3
if A(heads, path)=="Monster dies" or B(heads, path) == "Monster dies":
return "Monster dies"
def B(heads, path):
if heads < -1:
path = []
return "Impossible to kill"
#print "B", path, heads
heads -= 4
path.append("B")
if heads == 0:
print path
path =[]
return "Monster dies"
if heads == -1:
return "Both monster and human die"
heads += 2
if A(heads, path)=="Monster dies" or B(heads, path) == "Monster dies":
return "Monster dies"
print A(10, [])
Datos de muestra (proporcionados por la pregunta): para n = 10, la ruta más corta es AAB.
¿En qué parte del programa me he equivocado y qué es un mejor método para pasar por este problema?
No hay solución correcta