fork download
  1. E=enumerate
  2. def L(x,y,d):
  3. q=[(x,y,[(x,y)])]
  4. for x,y,p in q:
  5. if(x,y)in d and'T'==d[(x,y)]:del d[(x,y)];return p
  6. q+=[(*t,p+[t])for t in[(x+1,y),(x-1,y),(x,y-1),(x,y+1)]if(V:=d.get(t))and(V!='M')>(t in p)]
  7. def f(b):
  8. d,r={(x,y):v for x,r in E(b)for y,v in E(r)},[];x,y=[j for j in d if'P'==d[j]][0]
  9. while~-all(j in r for j in d if'T'==d[j])and(V:=L(x,y,d)):r+=V;x,y=V[-1]
  10. return r
  11.  
  12. def to_board(s):
  13. return [a.split('|')[1:-1] for i,a in enumerate(filter(None, s.split('\n')))if i%2]
  14.  
  15. s1 = """
  16. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  17. |P| | | | | | | | | | | | |
  18. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  19. | | | | | | | | | | | | | |
  20. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  21. | | |T| | | | | | | | | | |
  22. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  23. | | |M|M|M|T| | | | | | | |
  24. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  25. | | | | | | | | | |T| | | |
  26. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  27. | | | | | | | | | | | | | |
  28. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  29. """
  30. s2 = """
  31. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  32. |P| | | | |M| | | | | | | |
  33. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  34. | | | | | |M| | | | | | | |
  35. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  36. | | |T| | |M| | | | | | | |
  37. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  38. |M|M|M|M|M|M| | | | | | | |
  39. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  40. | | | | | | | | | | | | | |
  41. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  42. | | | | | | | | | | | | | |
  43. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  44. """
  45. s3 = """
  46. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  47. |P| | |M|M|M| | | | | | | |
  48. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  49. | | | | | |M|M|M|M|M|M|M| |
  50. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  51. | | |M| | | | | | | | | | |
  52. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  53. | | |M|M|M|M| | | | | | | |
  54. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  55. | | | | | | | | | | | | | |
  56. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  57. | | | | | | | | | | | | | |
  58. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  59. """
  60. s4 = """
  61. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  62. |M|M|M|M|M|M|M|M|M|M|M|M|M|
  63. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  64. |M|M|M|M|M|M|M|M|M|M|M|M|M|
  65. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  66. |M|M|M|M|M|M|M|M|M|M|M|M|M|
  67. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  68. |M|M|M|M|M|M|M|M|M|M|M|M|M|
  69. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  70. |M|M|M|M|M|M|M|M|M|M|M|M|M|
  71. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  72. |M|M|M|M|M|M|M|M|M|M|M|M|P|
  73. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  74. """
  75. s5 = """
  76. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  77. |T|T|T|T|T|T|T|T|T|T|T|T|T|
  78. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  79. |T|T|T|T|T|T|T|T|T|T|T|T|T|
  80. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  81. |T|T|T|T|T|T|P|T|T|T|T|T|T|
  82. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  83. |T|T|T|T|T|T|T|T|T|T|T|T|T|
  84. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  85. |T|T|T|T|T|T|T|T|T|T|T|T|T|
  86. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  87. |T|T|T|T|T|T|T|T|T|T|T|T|T|
  88. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  89. """
  90. s6 = """
  91. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  92. |P| | | | | | | | | | | |T|
  93. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  94. | | | | | | | | |M|M|M|M|M|
  95. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  96. | | | | | | | | | | | | | |
  97. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  98. | | | | | | | | |M|M|M|M|M|
  99. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  100. | | | | | | | | | | | | |T|
  101. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  102. | | | | | | | | |M|M|M|M|M|
  103. +-+-+-+-+-+-+-+-+-+-+-+-+-+
  104. """
  105. print(f(to_board(s1)))
  106. print(f(to_board(s2)))
  107. print(f(to_board(s3)))
  108. print(f(to_board(s4)))
  109. print(f(to_board(s5)))
  110. print(f(to_board(s6)))
Success #stdin #stdout 0.4s 40536KB
stdin
Standard input is empty
stdout
[(0, 0), (1, 0), (2, 0), (2, 1), (2, 2), (2, 2), (2, 3), (2, 4), (2, 5), (3, 5), (3, 5), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9)]
[(0, 0), (1, 0), (2, 0), (2, 1), (2, 2)]
[]
[]
[(2, 6), (3, 6), (3, 6), (4, 6), (4, 6), (5, 6), (5, 6), (5, 5), (5, 5), (4, 5), (4, 5), (3, 5), (3, 5), (2, 5), (2, 5), (1, 5), (1, 5), (0, 5), (0, 5), (0, 4), (0, 4), (1, 4), (1, 4), (2, 4), (2, 4), (3, 4), (3, 4), (4, 4), (4, 4), (5, 4), (5, 4), (5, 3), (5, 3), (4, 3), (4, 3), (3, 3), (3, 3), (2, 3), (2, 3), (1, 3), (1, 3), (0, 3), (0, 3), (0, 2), (0, 2), (1, 2), (1, 2), (2, 2), (2, 2), (3, 2), (3, 2), (4, 2), (4, 2), (5, 2), (5, 2), (5, 1), (5, 1), (4, 1), (4, 1), (3, 1), (3, 1), (2, 1), (2, 1), (1, 1), (1, 1), (0, 1), (0, 1), (0, 0), (0, 0), (1, 0), (1, 0), (2, 0), (2, 0), (3, 0), (3, 0), (4, 0), (4, 0), (5, 0)]
[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9), (0, 10), (0, 11), (0, 12), (0, 12), (0, 11), (0, 10), (0, 9), (0, 8), (0, 7), (1, 7), (2, 7), (3, 7), (4, 7), (4, 8), (4, 9), (4, 10), (4, 11), (4, 12)]