Je construis un robot lego géant et j'ai besoin de générer des rapports de vitesse particuliers en utilisant un ensemble d'engrenages. J'ai beaucoup de vitesses avec les tailles d'engrenages lego courantes: 8, 16, 24 ou 40 dents. Écrivez un programme que je peux utiliser où je saisis un rapport d'engrenage et le programme me dit quelle combinaison de vitesses je dois utiliser pour obtenir le rapport demandé.
Le rapport d'entrée sera spécifié sur l'entrée standard (ou l'équivalent de votre langue) avec deux entiers séparés par deux points. Un ratio a:bsignifie que l'arbre de sortie doit tourner des a/btemps aussi rapides que l'arbre d'entrée.
La sortie vers la sortie standard doit être une seule ligne contenant une liste séparée par des espaces des rapports d'engrenage, sous la forme x:yoù xest la taille de l'engrenage sur l'arbre d'entrée et yest la taille de l'engrenage sur l'arbre de sortie. Vous devez utiliser le nombre minimum de vitesses possible pour le rapport donné. Chacun xet ydoit être l'un des 8,16,24,40.
exemples:
1:5 -> 8:40
10:1 -> 40:8 16:8
9:4 -> 24:16 24:16
7:1 -> IMPOSSIBLE
7:7 ->
6:15 -> 16:40
Si le rapport de vitesse souhaité est impossible, imprimez "IMPOSSIBLE". Si aucun engrenage n'est requis, imprimez la chaîne vide.
C'est le golf de code, la réponse la plus courte l'emporte.
1:5 -> 8:40et 10:1 -> 40:8logique, mais pas les autres.
1:5signifie que l'arbre de sortie tourne 5 fois plus lentement, et un engrenage à 8 dents sur l'entrée et un engrenage à 40 dents sur la sortie rendent cela possible.
10:1 -> 40:8 16:8pas ce que vous avez dit. Et les autres vous déroutent? 9:4est implémenté en faisant 3:2deux fois. 3:2est implémenté à l'aide de 24:16.
7:7est identique à 1:1, il ne nécessite donc aucun engrenage à implémenter.