Đây là một ví dụ về những gì tôi muốn làm thông qua mã. Tôi biết bạn có thể sử dụng tìm kiếm điểm nhảy để dễ dàng chuyển từ nút xanh sang nút đỏ mà không gặp vấn đề gì, hoặc thậm chí là A *. Nhưng làm thế nào để bạn tính toán điều này với warps.
Trong ảnh, bạn có thể thấy rằng chỉ mất 8 lần di chuyển để chuyển từ nút xanh sang nút đỏ khi đi theo đường dẫn màu xanh. Đường dẫn màu xanh ngay lập tức di chuyển vị trí của bạn từ một nút màu tím sang nút tiếp theo. Khoảng trống ở giữa có giá 2 lần di chuyển là một điểm giữa hai vùng dọc mà bạn phải di chuyển để đến.
Rõ ràng là nhanh hơn để đi theo con đường màu xanh, vì bạn chỉ cần di chuyển một nửa (gần như) đến con đường màu vàng, nhưng làm thế nào để tôi làm điều này theo lập trình?
Với mục đích giải quyết vấn đề này, hãy giả sử rằng có nhiều "vệt" màu tím xung quanh biểu đồ mà bạn có thể sử dụng, VÀ chúng tôi biết chính xác từng điểm màu tím sẽ di chuyển đến đâu và vị trí của chúng trên biểu đồ.
Một số sợi dọc màu tím là hai hướng, và một số thì không, có nghĩa là, đôi khi bạn chỉ có thể nhập một sợi dọc từ một phía, nhưng không quay trở lại sau khi cong vênh.
Tôi đã nghĩ về giải pháp và chỉ kết luận rằng tôi sẽ có thể tính toán được vấn đề bằng cách kiểm tra khoảng cách đến từng điểm dọc (trừ các điểm đơn hướng) và sự khác biệt giữa các điểm đó và các điểm gần với chúng .
Chương trình sẽ phải tìm ra bằng cách nào đó có lợi hơn khi thực hiện lần thứ hai, thay vì đi bộ từ lần nhảy đầu tiên. Vì vậy, thay vì di chuyển 6 điểm, sau đó cong vênh, sau đó di chuyển 8 bước còn lại bằng chân (cũng nhanh hơn so với việc không sử dụng warp nào), nó sẽ thực hiện 6 bước, sau đó hai bước chuyển sang warp thứ hai.
EDIT: Tôi nhận ra con đường màu xanh thực sự sẽ thực hiện 12 bước, thay vì 8, nhưng câu hỏi vẫn giữ nguyên.