Inspirado pelo desafio das relações de marchas da Lego por Keith Randall.
Também planejo construir um robô lego gigante que acabará destruindo os outros robôs na competição nunca mencionada. * No processo de construção do robô, usarei muitos trens de engrenagem para conectar diferentes partes do robô. Quero que você me escreva o programa mais curto que me ajudará a construir os complexos trens de engrenagem necessários para uma tarefa tão complexa. Obviamente, usarei apenas engrenagens com raios 1, 2, 3 e 5 unidades lego arbitrárias.
Cada engrenagem no trem de engrenagens tem uma coordenada inteira específica em uma grade 2D. A primeira marcha está localizada em (0,0) e a marcha final será localizada em coordenadas não-negativas. O local e o tamanho da primeira e da última marcha serão fornecidos como entrada. Seu programa deve informar quais marchas serão para onde preencher as lacunas.
Além disso, seu programa deve usar o número mínimo possível de marchas no trem de engrenagens. Menos engrenagens / trem = mais trens ** = maior e melhor robô de destruição.
A entrada consistirá em uma linha:
X,Y,B,A
X e Y são as coordenadas da marcha final. A primeira marcha está sempre localizada em (0,0). B e A são os raios das marchas final e inicial, respectivamente. Para adicionar alguma dificuldade, você precisa garantir que a engrenagem de saída gire na direção correta.Se A e B tiverem o mesmo sinal, a engrenagem de saída precisará girar na mesma direção, e um número ímpar de marchas deverá ser usado. Se eles tiverem sinais opostos, será necessário usar um número par de marchas.
A saída deve ser uma lista da localização X, localização Y e raios de cada marcha adicional, uma marcha por linha. Se houver várias soluções de engrenagem mínima, imprima apenas uma de sua escolha. A ordem das marchas na saída não importa.
Exemplos (soluções mais equivalentes podem ser possíveis):
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!
Aqui estão as soluções para os exemplos acima, visualizadas:
Até onde eu sei, nenhum problema é impossível, a menos que as duas engrenagens de entrada se sobreponham ou se conectem diretamente. Você não terá que lidar com isso.
Este é o código de golfe, a resposta mais curta vence.
* Um futuro KOTH, alguém?
** CHOO CHOO !!