Zainspirowany wyzwaniem przełożenia Lego autorstwa Keitha Randalla.
Ja także planuję zbudować gigantycznego robota Lego, który ostatecznie będzie w stanie zniszczyć inne roboty w nigdy wcześniej nie wspomnianej konkurencji. * W trakcie budowy robota będę używać wielu pociągów zębatych do połączenia różne części robota. Chcę, żebyś napisał mi najkrótszy program, który pomoże mi zbudować złożone przekładnie zębate, które są wymagane do tak złożonego zadania. Oczywiście będę używać tylko kół zębatych o promieniu 1, 2, 3 i 5 jednostek arbitralnych-lego.
Każdy bieg w przekładni ma określoną współrzędną całkowitą na siatce 2D. Pierwszy bieg znajduje się na (0,0), a ostatni bieg będzie na współrzędnych nieujemnych. Lokalizacja i rozmiar pierwszego i ostatniego biegu zostaną podane jako dane wejściowe, twój program musi powiedzieć, które biegi idą gdzie wypełnić luki.
Dodatkowo twój program musi wykorzystywać minimalną możliwą liczbę biegów w przekładni. Mniej biegów / pociągów = więcej pociągów ** = większy i lepszy robot zniszczenia.
Dane wejściowe będą składać się z jednego wiersza:
X,Y,B,A
X i Y są współrzędnymi ostatniego biegu. Pierwszy bieg jest zawsze ustawiony na (0,0). B i A są odpowiednio promieniami biegu końcowego i początkowego. Aby dodać trochę trudności, musisz upewnić się, że koło wyjściowe obraca się we właściwym kierunku. Jeśli A i B mają ten sam znak, to koło wyjściowe musi się obracać w tym samym kierunku i należy użyć nieparzystej liczby kół zębatych. Jeśli mają przeciwne znaki, należy użyć parzystej liczby biegów.
Wyjściem powinna być lista lokalizacji X, lokalizacji Y i promieni każdego dodatkowego biegu, jeden bieg na linię. Jeśli istnieje wiele rozwiązań z minimalnym sprzętem, wydrukuj tylko jedno z wybranych. Kolejność biegów na wyjściu nie ma znaczenia.
Przykłady (możliwe mogą być bardziej równoważne rozwiązania):
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!
Oto rozwiązania powyższych przykładów, wizualizowane:
O ile mi wiadomo, żaden problem nie jest niemożliwy, chyba że dwa biegi wejściowe nachodzą na siebie lub się bezpośrednio łączą. Nie będziesz musiał sobie z tym poradzić.
To jest golf golfowy, wygrywa najkrótsza odpowiedź.
* Przyszły KOTH, ktoś?
** CHOO CHOO !!