subroutine tsp_dantzig42_order ( dantzig42_order ) c*********************************************************************72 c cc tsp_dantzig42_order() returns the ordering for the Dantzig 42 city TSP challenge. c c Licensing: c c This code is distributed under the MIT license. c c Modified: c c 15 July 2026 c c Author: c c John Burkardt c c Output: c c integer dantzig42_order[42]: the 1-based optimal tour order. c implicit none integer dantzig42_order(42) dantzig42_order = (/ & 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, & 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, & 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, & 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, & 2, 1 /) return end subroutine tsp_dantzig42_xy ( dantzig42_xy ) c*********************************************************************72 c cc tsp_dantzig42_xy() returns the locations for the Dantzig 42 city TSP challenge. c c Discussion: c c The original values c c 147.5, 36.0, c 154.5, 45.0, c c were adjusted to c c 147.0, 36.0, c 154.0, 45.0, c c so that all coordinates are integers. c c Licensing: c c This code is distributed under the MIT license. c c Modified: c c 21 July 2026 c c Author: c c John Burkardt c c Output: c c double precision tsp_dantzig42_xy(42,2): the x and y coordinates of the cities. c implicit none double precision dantzig42_xy(42,2) c c Excuse this monstrous "tranpose(reshape())", caused by the fact that c the data is by rows, but Fortran prefers columns. c dantzig42_xy = transpose ( reshape ( (/ & 170.0, 85.0, & 166.0, 88.0, & 133.0, 73.0, & 140.0, 70.0, & 142.0, 55.0, & 126.0, 53.0, & 125.0, 60.0, & 119.0, 68.0, & 117.0, 74.0, & 99.0, 83.0, & 73.0, 79.0, & 72.0, 91.0, & 37.0, 94.0, & 6.0, 106.0, & 3.0, 97.0, & 21.0, 82.0, & 33.0, 67.0, & 4.0, 66.0, & 3.0, 42.0, & 27.0, 33.0, & 52.0, 41.0, & 57.0, 59.0, & 58.0, 66.0, & 88.0, 65.0, & 99.0, 67.0, & 95.0, 55.0, & 89.0, 55.0, & 83.0, 38.0, & 85.0, 25.0, & 104.0, 35.0, & 112.0, 37.0, & 112.0, 24.0, & 113.0, 13.0, & 125.0, 30.0, & 135.0, 32.0, & 147.0, 18.0, & 147.0, 36.0, & 154.0, 45.0, & 157.0, 54.0, & 158.0, 61.0, & 172.0, 82.0, & 174.0, 87.0 /), (/ 2,42 /) ) ) return end