Ở một vương quốc xa xôi, một nữ hoàng cờ vua đi bộ hàng ngày trên một con đường xoắn ốc, được đánh số từ 1 đến n
, không quan tâm đến việc đi theo vòng xoắn ốc, mà chỉ đơn giản là thực hiện các động tác của nữ hoàng như trên bàn cờ. Nữ hoàng được yêu mến bởi các đối tượng của mình, và họ ghi chú lại mọi quảng trường mà cô ghé thăm trên con đường của mình. Cho rằng nữ hoàng có thể bắt đầu đi bộ trên bất kỳ quảng trường nào và kết thúc nó trên bất kỳ quảng trường nào, bước đi ngắn nhất của nữ hoàng mà cô có thể đi là gì?
Các thách thức
Đưa ra một vòng tròn số nguyên trên lưới hình chữ nhật, viết một hàm trả về một trong những đường đi ngắn nhất có thể (tính theo số lượng ô di chuyển) giữa hai số trên lưới xoắn ốc này bằng cách di chuyển của một nữ hoàng cờ vua.
Ví dụ: từ 16
đến 25
:
25 10 11 12 13
24 9 2 3 14
23 8 1 4 15
22 7 6 5 16
21 20 19 18 17
Một số đường dẫn có thể bao gồm 16, 4, 2, 10, 25
và 16, 5, 1, 9, 25
.
Quy tắc
- Đầu vào sẽ là bất kỳ hai số nguyên dương.
- Đầu ra sẽ là một đường dẫn của các số nguyên (bao gồm cả hai điểm cuối) trên đường xoắn ốc chỉ sử dụng các chuyển động trực giao và đường chéo.
- Độ dài của một đường dẫn được tính bằng số lượng ô di chuyển.
- Câu trả lời của bạn có thể là một chương trình hoặc một chức năng.
- Đây là mã golf, vì vậy số byte nhỏ nhất sẽ thắng.
Như mọi khi, nếu vấn đề không rõ ràng, xin vui lòng cho tôi biết. Chúc may mắn và chơi golf tốt!
Các trường hợp thử nghiệm
>>> queen_spiral(4, 5)
4, 5
>>> queen_spiral(13, 20)
13, 3, 1, 7, 20
>>> queen_spiral(14, 14)
14
>>> queen_spiral(10, 3)
10, 11, 3
>>> queen_spiral(16, 25)
16, 4, 2, 10, 25
>>> queen_spiral(80, 1)
80, 48, 24, 8, 1