체스에서 기사의 움직임 만 사용하여 두 지점 사이를 빠르게 갈 수있는 방법을 찾고자하는 문제가 있습니다. 처음 생각한 것은 A*
알고리즘이나 Dijkstra's
알고리즘이었습니다. 나이트 동작 만 사용하는 방법을 모르겠습니다. 더 나은 알고리즘이나 나를 도울 수있는 몇 가지 팁을 제안 해 주시면 감사하겠습니다. 고맙습니다. 당신이 시작되는 소스 광장, 그리고 당신이 퍼즐을 해결하기 위해 땅을 필요로하는 곳에있는 대상 광장 : 체스 기사의 움직임 만 사용하여 타일 하나에서 다른 타일로 이동하는 간단한 알고리즘
는 두 개의 매개 변수에 걸리는 대답 (SRC, 이명 령)라는 함수를 작성합니다. 이 함수는 체스 기사의 움직임을 사용하여 소스 사각형에서 대상 사각형으로 이동하는 데 필요한 최소 이동 수를 나타내는 정수를 반환해야합니다 (즉, 모든 방향에서 두 개의 사각형과 그 방향에 수직 인 한 개의 사각형이 바로 뒤에옵니다) , 또는 그 반대로, "L"모양). 모두 원본 및 대상 사각형은 0에서 63까지의 정수가 될 것이며, 아래의 예 체스 판처럼 번호가 매겨집니다 : 주어진 노드의 모든 이웃을 찾을 필요가 알고리즘에 대한
------------------------- | 0| 1| 2| 3| 4| 5| 6| 7| ------------------------- | 8| 9|10|11|12|13|14|15| ------------------------- |16|17|18|19|20|21|22|23| ------------------------- |24|25|26|27|28|29|30|31| ------------------------- |32|33|34|35|36|37|38|39| ------------------------- |40|41|42|43|44|45|46|47| ------------------------- |48|49|50|51|52|53|54|55| ------------------------- |56|57|58|59|60|61|62|63| -------------------------
Joseph, 흥미로운 문제에 대해 감사드립니다. 나는 내 접근 방식을 답안에 추가 할 것이지만 나는 단지 몇 가지 것을 빨리 말하고 싶다. (1) 문제에 대한 여러 가지 최단 해결책이 있습니다. (2) x와 y 오프셋을 가진 대수적 해가 존재한다; (3) 8면 대칭 (실제로 4 x 2)이 있습니다. x> y, x와 y가 모두 양수 또는 0 인 경우를 연구 할 수 있습니다. – xxyzzy