Lấy cảm hứng từ thử thách tỷ số thiết bị Lego của Keith Randall.
Tôi cũng có kế hoạch xây dựng một robot lego khổng lồ mà cuối cùng sẽ có thể tiêu diệt các robot khác trong cuộc cạnh tranh chưa từng được đề cập. * Trong quá trình chế tạo robot, tôi sẽ sử dụng rất nhiều tàu bánh răng để kết nối các bộ phận khác nhau của robot. Tôi muốn bạn viết cho tôi chương trình ngắn nhất sẽ giúp tôi xây dựng các đoàn tàu bánh răng phức tạp cần thiết cho một nhiệm vụ phức tạp như vậy. Tất nhiên, tôi sẽ chỉ sử dụng các bánh răng với bán kính 1, 2, 3 và 5 đơn vị lego tùy ý.
Mỗi bánh răng trong bộ truyền bánh răng có tọa độ nguyên cụ thể trên lưới 2D. Bánh răng đầu tiên được đặt ở (0,0) và bánh răng cuối cùng sẽ được đặt ở tọa độ không âm. Vị trí và kích thước của các bánh răng đầu tiên và cuối cùng sẽ được cung cấp làm đầu vào, chương trình của bạn phải cho biết các bánh răng đi đâu để điền vào các khoảng trống.
Ngoài ra, chương trình của bạn phải sử dụng số lượng bánh răng tối thiểu có thể có trong bộ truyền bánh răng. Ít bánh răng / tàu hơn = nhiều tàu hơn ** = robot hủy diệt lớn hơn và tốt hơn.
Đầu vào sẽ bao gồm một dòng:
X,Y,B,A
X và Y là tọa độ của bánh răng cuối cùng. Bánh răng đầu tiên luôn nằm ở (0,0). B và A lần lượt là bán kính của bánh răng cuối cùng và ban đầu. Để thêm một số khó khăn, bạn cần đảm bảo rằng bánh răng đầu ra quay đúng hướng. Nếu A và B có cùng dấu, thì bánh răng đầu ra cần quay cùng hướng và phải sử dụng số bánh răng lẻ. Nếu chúng có dấu hiệu ngược lại, thì cần sử dụng số bánh răng chẵn.
Đầu ra phải là một danh sách các vị trí X, vị trí Y và bán kính của từng bánh răng bổ sung, một bánh răng trên mỗi dòng. Nếu có nhiều giải pháp thiết bị tối thiểu, chỉ in một trong những lựa chọn của bạn. Thứ tự của các bánh răng trong đầu ra không quan trọng.
Ví dụ (có thể có nhiều giải pháp tương đương hơn):
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!
Đây là giải pháp cho các ví dụ trên, được hình dung:
Theo tôi biết, không có vấn đề gì là không thể trừ khi hai bánh răng đầu vào trùng nhau hoặc kết nối trực tiếp. Bạn sẽ không phải đối phó với điều này.
Đây là mã golf, câu trả lời ngắn nhất thắng.
* Một KOTH tương lai, có ai không?
**CHOO CHOO!!