Inspiré des rapports de démultiplication Lego défi des de Keith Randall.
Moi aussi, je prévois de construire un robot lego géant qui sera éventuellement en mesure de détruire les autres robots dans la compétition sans précédent. * Dans le processus de construction du robot, j'utiliserai beaucoup de trains d'engrenages pour me connecter différentes parties du robot. Je veux que vous m'écriviez le programme le plus court qui m'aidera à construire les trains d'engrenages complexes qui sont nécessaires pour une tâche aussi complexe. Bien sûr, je n'utiliserai que des engrenages avec des rayons 1, 2, 3 et 5 unités lego arbitraires.
Chaque engrenage du train d'engrenages a une coordonnée entière spécifique sur une grille 2D. Le premier engrenage est situé à (0,0) et l'engrenage final sera situé à des coordonnées non négatives. L'emplacement et la taille des premier et dernier engrenages seront fournis en entrée, votre programme doit indiquer quels engrenages vont où combler les lacunes.
De plus, votre programme doit utiliser le nombre minimum de vitesses possible dans le train d'engrenages. Moins de vitesses / train = plus de trains ** = robot de destruction plus grand et meilleur.
L'entrée consistera en une ligne:
X,Y,B,A
X et Y sont les coordonnées de l'engrenage final. La première vitesse est toujours située à (0,0). B et A sont respectivement les rayons des vitesses finale et initiale. Pour ajouter une certaine difficulté, vous devez vous assurer que le pignon de sortie tourne dans le bon sens.Si A et B ont le même signe, alors le pignon de sortie doit tourner dans le même sens, et un nombre impair de vitesses doit être utilisé. S'ils ont des signes opposés, alors un nombre pair de vitesses doit être utilisé.
La sortie doit être une liste de l'emplacement X, de l'emplacement Y et des rayons de chaque engrenage supplémentaire, un engrenage par ligne. S'il existe plusieurs solutions à vitesse minimale, n'imprimez qu'une seule de votre choix. L'ordre des vitesses dans la sortie n'a pas d'importance.
Exemples (des solutions plus équivalentes peuvent être possibles):
in
4,0,1,1
out
2,0,1
in
7,7,-2,-2
out
4,3,3
OR
0,7,5
OR
the above reflected over y=x line
in
7,8,-1,2
out
7,0,5
7,6,1
OR
7,0,5
1,8,5
in
7,7,2,-2
out
4,-3,3
7,1,2
12,1,3
12,7,3
OR
any permutation of the above, or reflected over y=x line
Now you're thinking with gear trains!
Voici les solutions aux exemples ci-dessus, visualisées:
Pour autant que je sache, aucun problème n'est impossible à moins que les deux vitesses d'entrée se chevauchent ou se connectent directement. Vous n'aurez pas à vous en occuper.
C'est le golf de code, la réponse la plus courte l'emporte.
* Un futur KOTH, quelqu'un?
** CHOO CHOO !!