Estoy construyendo un robot lego gigante y necesito generar algunas relaciones de engranaje particulares usando un conjunto de engranajes. Tengo muchos engranajes con los tamaños de engranajes de lego comunes: 8, 16, 24 o 40 dientes. Escriba un programa que pueda usar donde ingrese una relación de engranaje y el programa me dice qué combinación de engranajes debo usar para obtener la relación solicitada.
La relación de entrada se especificará en la entrada estándar (o el equivalente de su idioma) con dos enteros separados por dos puntos. Una relación de a:b
significa que el eje de salida debe girar a/b
veces más rápido que el eje de entrada.
La salida a la salida estándar debe ser una sola línea que contenga una lista de relaciones de engranajes separadas por espacios, en forma de x:y
dónde x
está el tamaño del engranaje en el eje de entrada y y
el tamaño del engranaje en el eje de salida. Debe usar el mínimo número posible de engranajes para la relación dada. Cada uno x
y y
debe ser uno de 8,16,24,40
.
ejemplos:
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 la relación de transmisión deseada es imposible, imprima "IMPOSIBLE". Si no se requieren engranajes, imprima la cadena vacía.
Este es el código de golf, gana la respuesta más corta.
1:5 -> 8:40
y 10:1 -> 40:8
tiene sentido pero los demás no tanto.
1:5
significa que el eje de salida gira 5 veces más lento, y un engranaje de 8 dientes en la entrada y un engranaje de 40 dientes en la salida hacen que eso suceda.
10:1 -> 40:8 16:8
no es lo que dijiste. ¿Qué hay de los demás que te confunde? 9:4
Se implementa haciendo 3:2
dos veces. 3:2
se implementa usando 24:16
.
7:7
es lo mismo que 1:1
, por lo que no requiere engranajes para implementar.