Keeps the repo root clean - only README.md visible on landing page. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
374 lines
8.6 KiB
C#
374 lines
8.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text.RegularExpressions;
|
|
|
|
public struct Step
|
|
{
|
|
public int X;
|
|
public int Y;
|
|
public int DelayMs;
|
|
}
|
|
|
|
const int START_X = 13;
|
|
const int START_Y = 13;
|
|
|
|
string rawDump = @"
|
|
1. (13,14) after 971ms
|
|
2. (13,15) after 499ms
|
|
3. (13,14) after 61ms
|
|
4. (13,16) after 438ms
|
|
5. (13,15) after 40ms
|
|
6. (13,17) after 499ms
|
|
7. (13,16) after 47ms
|
|
8. (13,18) after 452ms
|
|
9. (13,17) after 89ms
|
|
10. (13,19) after 410ms
|
|
11. (13,18) after 40ms
|
|
12. (13,20) after 467ms
|
|
13. (13,19) after 75ms
|
|
14. (13,21) after 424ms
|
|
15. (13,20) after 40ms
|
|
16. (12,21) after 489ms
|
|
17. (13,21) after 61ms
|
|
18. (12,20) after 438ms
|
|
19. (12,21) after 104ms
|
|
20. (12,19) after 395ms
|
|
21. (12,20) after 47ms
|
|
22. (12,18) after 452ms
|
|
23. (12,19) after 91ms
|
|
24. (12,17) after 407ms
|
|
25. (12,18) after 40ms
|
|
26. (12,16) after 474ms
|
|
27. (12,17) after 71ms
|
|
28. (12,15) after 424ms
|
|
29. (12,16) after 40ms
|
|
30. (12,14) after 486ms
|
|
31. (12,15) after 60ms
|
|
32. (11,14) after 438ms
|
|
33. (12,14) after 108ms
|
|
34. (11,15) after 391ms
|
|
35. (11,14) after 46ms
|
|
36. (11,15) after 544ms
|
|
37. (11,16) after 408ms
|
|
38. (11,17) after 499ms
|
|
39. (11,16) after 80ms
|
|
40. (11,18) after 419ms
|
|
41. (11,17) after 40ms
|
|
42. (11,19) after 484ms
|
|
43. (11,18) after 58ms
|
|
44. (11,20) after 442ms
|
|
45. (11,19) after 110ms
|
|
46. (11,21) after 389ms
|
|
47. (11,20) after 47ms
|
|
48. (10,21) after 452ms
|
|
49. (11,21) after 91ms
|
|
50. (10,20) after 409ms
|
|
51. (10,21) after 40ms
|
|
52. (10,19) after 473ms
|
|
53. (10,20) after 79ms
|
|
54. (10,18) after 420ms
|
|
55. (10,19) after 40ms
|
|
56. (10,17) after 485ms
|
|
57. (10,18) after 62ms
|
|
58. (10,16) after 437ms
|
|
59. (10,17) after 109ms
|
|
60. (10,15) after 390ms
|
|
61. (10,16) after 44ms
|
|
62. (10,14) after 455ms
|
|
63. (10,15) after 93ms
|
|
64. (9,14) after 406ms
|
|
65. (10,14) after 40ms
|
|
66. (9,15) after 476ms
|
|
67. (9,14) after 68ms
|
|
68. (9,16) after 424ms
|
|
69. (9,15) after 40ms
|
|
70. (9,17) after 485ms
|
|
71. (9,16) after 62ms
|
|
72. (9,18) after 437ms
|
|
73. (9,17) after 94ms
|
|
74. (9,19) after 405ms
|
|
75. (9,18) after 40ms
|
|
76. (9,20) after 481ms
|
|
77. (9,19) after 62ms
|
|
78. (9,21) after 437ms
|
|
79. (9,20) after 40ms
|
|
80. (8,20) after 500ms
|
|
81. (9,21) after 44ms
|
|
82. (8,20) after 546ms
|
|
83. (8,21) after 1407ms
|
|
84. (8,20) after 500ms
|
|
85. (8,21) after 62ms
|
|
86. (8,19) after 437ms
|
|
87. (8,20) after 104ms
|
|
88. (8,18) after 394ms
|
|
89. (8,19) after 42ms
|
|
90. (8,17) after 457ms
|
|
91. (8,18) after 94ms
|
|
92. (8,16) after 406ms
|
|
93. (8,17) after 40ms
|
|
94. (8,15) after 469ms
|
|
95. (8,16) after 77ms
|
|
96. (8,14) after 422ms
|
|
97. (8,15) after 40ms
|
|
98. (9,14) after 492ms
|
|
99. (8,14) after 55ms
|
|
100. (9,14) after 441ms
|
|
101. (8,14) after 499ms
|
|
102. (8,15) after 1000ms
|
|
103. (8,16) after 499ms
|
|
104. (8,15) after 75ms
|
|
105. (8,17) after 424ms
|
|
106. (8,16) after 40ms
|
|
107. (8,18) after 484ms
|
|
108. (8,17) after 61ms
|
|
109. (8,19) after 438ms
|
|
110. (8,18) after 106ms
|
|
111. (8,19) after 440ms
|
|
112. (9,20) after 453ms
|
|
113. (8,21) after 500ms
|
|
114. (9,20) after 40ms
|
|
115. (8,21) after 548ms
|
|
116. (9,21) after 423ms
|
|
117. (10,21) after 499ms
|
|
118. (9,21) after 62ms
|
|
119. (10,20) after 438ms
|
|
120. (10,21) after 104ms
|
|
121. (9,19) after 394ms
|
|
122. (10,20) after 47ms
|
|
123. (9,18) after 452ms
|
|
124. (9,19) after 89ms
|
|
125. (9,17) after 410ms
|
|
126. (9,18) after 40ms
|
|
127. (9,16) after 472ms
|
|
128. (9,17) after 80ms
|
|
129. (9,15) after 419ms
|
|
130. (9,16) after 40ms
|
|
131. (10,14) after 487ms
|
|
132. (9,15) after 59ms
|
|
133. (10,14) after 546ms
|
|
134. (10,15) after 393ms
|
|
135. (10,16) after 499ms
|
|
136. (10,15) after 91ms
|
|
137. (10,17) after 408ms
|
|
138. (10,16) after 40ms
|
|
139. (10,18) after 467ms
|
|
140. (10,17) after 75ms
|
|
141. (10,19) after 423ms
|
|
142. (10,18) after 40ms
|
|
143. (11,20) after 486ms
|
|
144. (10,19) after 61ms
|
|
145. (11,21) after 437ms
|
|
146. (11,20) after 109ms
|
|
147. (11,21) after 436ms
|
|
148. (12,21) after 954ms
|
|
149. (13,21) after 499ms
|
|
150. (12,21) after 75ms
|
|
151. (12,20) after 424ms
|
|
152. (13,21) after 40ms
|
|
153. (13,20) after 485ms
|
|
154. (12,20) after 64ms
|
|
155. (13,19) after 436ms
|
|
156. (13,20) after 40ms
|
|
157. (12,19) after 497ms
|
|
158. (13,19) after 44ms
|
|
159. (11,19) after 455ms
|
|
160. (12,19) after 94ms
|
|
161. (11,18) after 405ms
|
|
162. (11,19) after 40ms
|
|
163. (12,18) after 471ms
|
|
164. (11,18) after 74ms
|
|
165. (13,18) after 425ms
|
|
166. (12,18) after 40ms
|
|
167. (13,17) after 484ms
|
|
168. (13,18) after 64ms
|
|
169. (13,17) after 543ms
|
|
170. (12,17) after 391ms
|
|
171. (11,17) after 499ms
|
|
172. (12,17) after 90ms
|
|
173. (11,17) after 443ms
|
|
174. (11,16) after 466ms
|
|
175. (11,15) after 499ms
|
|
176. (11,16) after 40ms
|
|
177. (11,14) after 485ms
|
|
178. (11,15) after 63ms
|
|
179. (12,14) after 436ms
|
|
180. (11,14) after 106ms
|
|
181. (12,14) after 438ms
|
|
182. (12,15) after 455ms
|
|
183. (12,16) after 499ms
|
|
184. (12,15) after 40ms
|
|
185. (13,16) after 487ms
|
|
186. (12,16) after 63ms
|
|
187. (13,15) after 436ms
|
|
188. (13,16) after 107ms
|
|
189. (13,14) after 393ms
|
|
190. (13,15) after 45ms
|
|
191. (13,14) after 545ms
|
|
192. (12,14) after 409ms
|
|
193. (11,14) after 500ms
|
|
194. (12,14) after 74ms
|
|
195. (12,15) after 424ms
|
|
196. (11,14) after 40ms
|
|
197. (13,16) after 488ms
|
|
198. (12,15) after 64ms
|
|
199. (13,15) after 435ms
|
|
200. (13,16) after 106ms
|
|
201. (13,14) after 394ms
|
|
202. (13,15) after 46ms
|
|
203. (13,14) after 548ms
|
|
204. (12,14) after 403ms
|
|
205. (11,14) after 499ms
|
|
206. (12,14) after 74ms
|
|
207. (11,14) after 437ms
|
|
208. (12,15) after 1487ms
|
|
209. (13,14) after 500ms
|
|
210. (12,15) after 95ms
|
|
211. (13,14) after 435ms
|
|
212. (13,15) after 468ms
|
|
213. (13,16) after 500ms
|
|
214. (13,15) after 40ms
|
|
215. (13,17) after 487ms
|
|
216. (13,16) after 60ms
|
|
217. (13,18) after 440ms
|
|
218. (13,17) after 105ms
|
|
219. (13,19) after 392ms
|
|
220. (13,18) after 48ms
|
|
221. (13,20) after 451ms
|
|
222. (13,19) after 92ms
|
|
223. (13,21) after 407ms
|
|
224. (13,20) after 40ms
|
|
225. (12,21) after 471ms
|
|
226. (13,21) after 80ms
|
|
227. (11,21) after 420ms
|
|
228. (12,21) after 40ms
|
|
229. (12,20) after 487ms
|
|
230. (11,21) after 61ms
|
|
231. (13,19) after 439ms
|
|
232. (12,20) after 108ms
|
|
233. (13,20) after 390ms
|
|
234. (13,19) after 47ms
|
|
235. (13,21) after 452ms
|
|
236. (13,20) after 95ms
|
|
237. (13,21) after 438ms
|
|
238. (12,21) after 2966ms
|
|
239. (12,20) after 999ms
|
|
240. (11,21) after 500ms
|
|
241. (12,20) after 40ms
|
|
242. (11,21) after 553ms
|
|
243. (10,21) after 934ms
|
|
244. (9,21) after 500ms
|
|
245. (10,21) after 92ms
|
|
246. (8,21) after 407ms
|
|
247. (9,21) after 40ms
|
|
248. (8,21) after 545ms
|
|
249. (9,20) after 1924ms
|
|
250. (8,21) after 999ms
|
|
251. (8,20) after 999ms
|
|
252. (8,19) after 500ms
|
|
253. (8,20) after 64ms
|
|
254. (8,18) after 435ms
|
|
255. (8,19) after 109ms
|
|
256. (8,18) after 435ms
|
|
257. (8,17) after 454ms
|
|
258. (8,18) after 999ms
|
|
259. (8,17) after 1000ms
|
|
260. (8,16) after 1999ms
|
|
261. (8,15) after 500ms
|
|
262. (8,16) after 78ms
|
|
263. (8,14) after 421ms
|
|
264. (8,15) after 40ms
|
|
265. (9,15) after 486ms
|
|
266. (8,14) after 63ms
|
|
267. (9,15) after 546ms
|
|
268. (8,14) after 891ms
|
|
269. (9,14) after 997ms
|
|
270. (10,14) after 500ms
|
|
271. (9,14) after 40ms
|
|
272. (10,15) after 484ms
|
|
273. (10,14) after 58ms
|
|
274. (11,15) after 440ms
|
|
275. (10,15) after 111ms
|
|
276. (12,16) after 387ms
|
|
277. (11,15) after 49ms
|
|
278. (12,16) after 546ms
|
|
279. (11,16) after 404ms
|
|
280. (10,16) after 500ms
|
|
281. (11,16) after 75ms
|
|
282. (9,16) after 424ms
|
|
283. (10,16) after 40ms
|
|
284. (9,17) after 483ms
|
|
285. (9,16) after 60ms
|
|
286. (10,17) after 439ms
|
|
287. (9,17) after 40ms
|
|
288. (11,17) after 498ms
|
|
289. (10,17) after 45ms
|
|
290. (12,17) after 453ms
|
|
291. (11,17) after 96ms
|
|
292. (12,18) after 403ms
|
|
293. (12,17) after 40ms
|
|
294. (11,18) after 467ms
|
|
295. (12,18) after 82ms
|
|
296. (10,18) after 417ms
|
|
297. (11,18) after 40ms
|
|
298. (9,18) after 482ms
|
|
299. (10,18) after 65ms
|
|
300. (9,19) after 435ms
|
|
301. (9,18) after 107ms
|
|
302. (10,19) after 392ms
|
|
303. (9,19) after 47ms
|
|
304. (11,19) after 452ms
|
|
305. (10,19) after 89ms
|
|
306. (12,19) after 409ms
|
|
307. (11,19) after 40ms
|
|
308. (11,20) after 471ms
|
|
309. (12,19) after 81ms
|
|
310. (10,20) after 418ms
|
|
311. (11,20) after 40ms
|
|
312. (10,20) after 545ms
|
|
";
|
|
|
|
List<Step> ParseSteps(string text)
|
|
{
|
|
var steps = new List<Step>();
|
|
var rx = new Regex(@"\((\d+),(\d+)\)\s+after\s+(\d+)ms", RegexOptions.Compiled);
|
|
foreach (Match m in rx.Matches(text))
|
|
{
|
|
steps.Add(new Step {
|
|
X = int.Parse(m.Groups[1].Value),
|
|
Y = int.Parse(m.Groups[2].Value),
|
|
DelayMs = int.Parse(m.Groups[3].Value)
|
|
});
|
|
}
|
|
return steps;
|
|
}
|
|
|
|
Log("=== Play Path From Dump ===");
|
|
var steps = ParseSteps(rawDump);
|
|
if (steps.Count == 0)
|
|
{
|
|
Log("ERROR: No steps parsed.");
|
|
return;
|
|
}
|
|
|
|
Log($"Parsed {steps.Count} steps.");
|
|
Log($"Waiting until you are on {START_X}:{START_Y}...");
|
|
|
|
while (Run)
|
|
{
|
|
if (Self != null && Self.Location != null && Self.Location.X == START_X && Self.Location.Y == START_Y)
|
|
break;
|
|
Delay(100);
|
|
}
|
|
|
|
if (!Run) return;
|
|
|
|
Log("Start reached. Replaying exact timed path...");
|
|
for (int i = 0; i < steps.Count; i++)
|
|
{
|
|
var s = steps[i];
|
|
if (s.DelayMs > 0) Delay(s.DelayMs);
|
|
Move(s.X, s.Y);
|
|
}
|
|
|
|
Log("Replay complete.");
|