Terinspirasi oleh tantangan rasio roda gigi Lego oleh Keith Randall.
Saya juga berencana membangun robot lego raksasa yang pada akhirnya akan dapat menghancurkan robot lain dalam kompetisi yang tidak pernah disebutkan sebelumnya. * Dalam proses membangun robot, saya akan menggunakan banyak kereta roda gigi untuk menghubungkan bagian-bagian berbeda dari robot. Saya ingin Anda menulis kepada saya program terpendek yang akan membantu saya membangun kereta roda gigi rumit yang diperlukan untuk tugas yang begitu rumit. Saya, tentu saja, hanya akan menggunakan roda gigi dengan jari-jari 1, 2, 3, dan 5 unit-sewenang-wenang.
Setiap gigi di gir kereta memiliki koordinat bilangan bulat tertentu pada kisi 2D. Gigi pertama terletak di (0,0) dan gigi akhir akan berada di koordinat non-negatif. Lokasi dan ukuran roda gigi pertama dan terakhir akan diberikan sebagai input, program Anda harus memberi tahu roda gigi mana yang harus diisi untuk mengisi celah tersebut.
Selain itu, program Anda harus menggunakan jumlah roda gigi minimum yang mungkin dalam kereta roda gigi. Lebih sedikit roda gigi / kereta = lebih banyak kereta ** = robot pemusnah yang lebih besar dan lebih baik.
Input akan terdiri dari satu baris:
X,Y,B,A
X dan Y adalah koordinat gigi akhir. Gigi pertama selalu berada di (0,0). B dan A adalah jari-jari roda gigi akhir dan awal, masing-masing. Untuk menambah kesulitan, Anda perlu memastikan bahwa roda gigi keluaran berputar ke arah yang benar. Jika A dan B memiliki tanda yang sama, maka gir keluaran perlu berputar ke arah yang sama, dan gir gir harus digunakan. Jika mereka memiliki tanda-tanda yang berlawanan, maka sejumlah gigi perlu digunakan.
Keluaran harus berupa daftar lokasi X, lokasi Y, dan jari-jari setiap gigi tambahan, satu gigi per baris. Jika ada beberapa solusi roda gigi minimal, cetak hanya satu pilihan Anda. Urutan roda gigi dalam output tidak masalah.
Contoh (solusi yang lebih setara mungkin):
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!
Inilah solusi untuk contoh di atas, divisualisasikan:
Sejauh yang saya tahu, tidak ada masalah tidak mungkin kecuali dua gigi input tumpang tindih atau langsung terhubung. Anda tidak perlu berurusan dengan ini.
Ini kode golf, jawaban terpendek menang.
* KOTH masa depan, siapa pun?
** CHOO CHOO !!
