Vous êtes le héros le meilleur et le plus célèbre de la région. Dernièrement, il y a eu des rumeurs selon lesquelles une Hydre traînait dans un ravin à proximité. En étant le héros courageux et vertueux que vous êtes, vous allez le vérifier un peu plus tard dans la journée.
Le problème avec l'hydre est que chaque fois que vous essayez de vous couper la tête, de nouvelles poussent. Heureusement pour vous, vous avez des épées qui peuvent couper plusieurs têtes à la fois. Mais il y a un hic, si l'hydre a moins de têtes que vos coupes d'épée, vous ne pourrez pas attaquer l'hydre. Lorsque l'hydre a exactement zéro tête, vous l'avez tuée.
Il y a aussi une épée spéciale appelée The Bisector qui coupera la moitié des têtes de l'Hydra, mais seulement si le nombre de têtes est pair. Le Bisector ne peut pas être utilisé du tout lorsque le nombre de têtes est impair. C'est différent de couper zéro têtes.
Vous avez donc décidé d'écrire un programme informatique pour trouver la meilleure façon de tuer l'hydre.
Tâche
Vous recevrez en entrée
- le nombre de têtes de l'Hydra commence par
- le nombre de têtes que l'hydre repousse à chaque tour
- une liste d'épées disponibles pour utilisation chacune (chacune est une bissectrice ou coupe un nombre fixe de têtes à chaque tour)
Vous devez produire une liste de mouvements qui tueront l'hydre dans le moins de tours possible. S'il n'y a aucun moyen de tuer l'hydre, vous devez sortir une autre valeur indiquant cela (et une liste vide est très bien si votre langue est fortement typée). S'il existe plusieurs façons optimales de tuer l'hydre, vous pouvez en générer une ou toutes.
Il s'agit d'une question de code-golf donc les réponses seront notées en octets, avec moins d'octets étant mieux.
Cas de test
Plus disponible sur demande
5 heads, 9 each turn, [-1,-2,-5] -> [-5]
12 heads, 1 each turn, [/2,-1] -> No solution
8 heads, 2 each turn, [-9, -1] -> [-1,-9]
3 heads, 23 each turn, [/2,-1,-26] -> [-1,-1,-26,-26,-26,-26,-26,-26,-26,-26]
16 heads, 1 each turn, [/2, 4, 2] -> [/2,-4,/2,-4]
Cette question est une version simplifiée du mécanisme principal d' HydraSlayer . Si vous aimez ce type de puzzle, je vous recommande de le vérifier, c'est assez amusant. Je n'ai aucune affiliation avec le jeu.
[/2, -2, /2, -2, -4]
fonctionne également.