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:b
signifie que l'arbre de sortie doit tourner des a/b
temps 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:y
où x
est la taille de l'engrenage sur l'arbre d'entrée et y
est la taille de l'engrenage sur l'arbre de sortie. Vous devez utiliser le nombre minimum de vitesses possible pour le rapport donné. Chacun x
et y
doit ê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:40
et 10:1 -> 40:8
logique, mais pas les autres.
1:5
signifie 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:8
pas ce que vous avez dit. Et les autres vous déroutent? 9:4
est implémenté en faisant 3:2
deux fois. 3:2
est implémenté à l'aide de 24:16
.
7:7
est identique à 1:1
, il ne nécessite donc aucun engrenage à implémenter.