Inspirado en el desafío de relaciones de engranajes de Lego de Keith Randall.
Yo también planeo construir un robot gigante de lego que eventualmente pueda destruir a los otros robots en la competencia nunca antes mencionada. * En el proceso de construcción del robot, usaré muchos trenes de engranajes para conectar diferentes partes del robot Quiero que me escribas el programa más corto que me ayudará a construir los trenes de engranajes complejos que se requieren para una tarea tan compleja. Por supuesto, solo usaré engranajes con radios 1, 2, 3 y 5 unidades arbitrarias de lego.
Cada engranaje en el tren de engranajes tiene una coordenada entera específica en una cuadrícula 2D. La primera marcha se encuentra en (0,0) y la marcha final se ubicará en coordenadas no negativas. La ubicación y el tamaño del primer y último engranaje se proporcionarán como entrada, su programa debe indicar qué engranajes van a dónde rellenar los huecos.
Además, su programa debe usar el mínimo número posible de engranajes en el tren de engranajes. Menos engranajes / tren = más trenes ** = robot de destrucción más grande y mejor.
La entrada consistirá en una línea:
X,Y,B,A
X e Y son las coordenadas de la marcha final. La primera marcha siempre se encuentra en (0,0). B y A son los radios de los engranajes final e inicial, respectivamente. Para agregar alguna dificultad, debe asegurarse de que el engranaje de salida gire en la dirección correcta. Si A y B tienen el mismo signo, entonces el engranaje de salida debe girar en la misma dirección, y se debe usar un número impar de engranajes. Si tienen signos opuestos, entonces se debe usar un número par de engranajes.
La salida debe ser una lista de la ubicación X, la ubicación Y y los radios de cada marcha adicional, una marcha por línea. Si hay varias soluciones de engranaje mínimo, imprima solo una de su elección. El orden de los engranajes en la salida no importa.
Ejemplos (pueden ser posibles soluciones más equivalentes):
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!
Aquí están las soluciones a los ejemplos anteriores, visualizadas:
Hasta donde yo sé, ningún problema es imposible a menos que los dos engranajes de entrada se superpongan o se conecten directamente. No tendrás que lidiar con esto.
Este es el código de golf, gana la respuesta más corta.
* Un futuro KOTH, alguien?
**¡¡CHÚ CHÚ!!