Inspiriert von den Lego-Übersetzungsverhältnissen von Keith Randall.
Auch ich plane den Bau eines riesigen Lego-Roboters, der in der Lage sein wird, die anderen Roboter in dem noch nie zuvor erwähnten Wettbewerb zu zerstören. * Während des Konstruktionsprozesses des Roboters werde ich viele Getriebezüge verwenden, um die Verbindung herzustellen verschiedene Teile des Roboters. Ich möchte, dass Sie mir das kürzeste Programm schreiben, mit dem ich die komplexen Getriebezüge konstruieren kann, die für eine solch komplexe Aufgabe erforderlich sind. Natürlich verwende ich nur Zahnräder mit den Radien 1, 2, 3 und 5 für beliebige Lego-Einheiten.
Jedes Zahnrad im Getriebezug hat eine bestimmte Ganzzahlkoordinate in einem 2D-Gitter. Der erste Gang befindet sich bei (0,0) und der letzte Gang befindet sich bei nicht negativen Koordinaten. Die Position und Größe des ersten und letzten Gangs werden als Eingabe bereitgestellt. Ihr Programm muss angeben, welche Gänge wohin geschaltet werden, um die Lücken zu füllen.
Zusätzlich muss Ihr Programm die minimal mögliche Anzahl von Zahnrädern im Getriebezug verwenden. Weniger Zahnräder / Zug = mehr Züge ** = größerer und besserer Zerstörungsroboter.
Die Eingabe besteht aus einer Zeile:
X,Y,B,A
X und Y sind die Koordinaten des letzten Gangs. Der erste Gang befindet sich immer bei (0,0). B und A sind die Radien der End- bzw. Anfangsgänge. Um einige Schwierigkeiten hinzuzufügen, müssen Sie sicherstellen, dass sich das Ausgangszahnrad in die richtige Richtung dreht. Wenn A und B dasselbe Vorzeichen haben, muss sich das Ausgangszahnrad in die gleiche Richtung drehen, und es muss eine ungerade Anzahl von Zahnrädern verwendet werden. Wenn sie entgegengesetzte Vorzeichen haben, muss eine gerade Anzahl von Zahnrädern verwendet werden.
Die Ausgabe sollte eine Liste der X-Position, Y-Position und Radien jedes zusätzlichen Zahnrads sein, ein Zahnrad pro Zeile. Wenn es mehrere Lösungen für minimale Zahnräder gibt, drucken Sie nur eine Ihrer Wahl. Die Reihenfolge der Gänge in der Ausgabe spielt keine Rolle.
Beispiele (äquivalentere Lösungen sind möglich):
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!
Hier sind die Lösungen für die obigen Beispiele dargestellt:
Soweit ich weiß, ist kein Problem unmöglich, wenn sich die beiden Eingangsräder nicht überlappen oder direkt verbinden. Damit müssen Sie sich nicht befassen.
Dies ist Code Golf, die kürzeste Antwort gewinnt.
* Eine zukünftige KOTH, irgendjemand?
**CHOO CHOO!!
