-
Notifications
You must be signed in to change notification settings - Fork 0
/
10.2.php
441 lines (415 loc) · 16.6 KB
/
10.2.php
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
<?php
$input = <<<EOT
position=<-10351, -10360> velocity=< 1, 1>
position=< 52528, 31539> velocity=<-5, -3>
position=<-31270, -20838> velocity=< 3, 2>
position=< 52486, -10365> velocity=<-5, 1>
position=< 31558, 10589> velocity=<-3, -1>
position=<-52253, 21064> velocity=< 5, -2>
position=<-10354, 42015> velocity=< 1, -4>
position=<-41798, 42013> velocity=< 4, -4>
position=<-52253, -52267> velocity=< 5, 5>
position=< 31550, -41793> velocity=<-3, 4>
position=<-31290, 10591> velocity=< 3, -1>
position=< 31542, -10363> velocity=<-3, 1>
position=< 21117, 52487> velocity=<-2, -5>
position=< 21074, -41796> velocity=<-2, 4>
position=< 10619, -20840> velocity=<-1, 2>
position=< 31562, 52495> velocity=<-3, -5>
position=< 31586, -20844> velocity=<-3, 2>
position=<-20837, 42020> velocity=< 2, -4>
position=< 52486, 10589> velocity=<-5, -1>
position=< 52518, -31313> velocity=<-5, 3>
position=<-31286, 21063> velocity=< 3, -2>
position=< 31536, -41793> velocity=<-3, 4>
position=< 52523, -52268> velocity=<-5, 5>
position=<-20830, -10364> velocity=< 2, 1>
position=< 31568, 10587> velocity=<-3, -1>
position=< 21116, -10369> velocity=<-2, 1>
position=< 31558, 21060> velocity=<-3, -2>
position=< 21074, 42013> velocity=<-2, -4>
position=< 21114, 42015> velocity=<-2, -4>
position=<-52231, -52269> velocity=< 5, 5>
position=<-20819, 21064> velocity=< 2, -2>
position=< 42062, -10365> velocity=<-4, 1>
position=<-31271, 52496> velocity=< 3, -5>
position=< 10598, -41791> velocity=<-1, 4>
position=< 42038, -10361> velocity=<-4, 1>
position=< 42047, -52273> velocity=<-4, 5>
position=<-31290, 10591> velocity=< 3, -1>
position=<-41742, 21066> velocity=< 4, -2>
position=< 31590, -41790> velocity=<-3, 4>
position=<-31314, -10360> velocity=< 3, 1>
position=< 42011, 42011> velocity=<-4, -4>
position=<-10366, 10583> velocity=< 1, -1>
position=<-10349, -20844> velocity=< 1, 2>
position=<-20806, -41790> velocity=< 2, 4>
position=< 42018, 52494> velocity=<-4, -5>
position=<-41746, -52271> velocity=< 4, 5>
position=< 52507, 10590> velocity=<-5, -1>
position=<-20793, 52487> velocity=< 2, -5>
position=< 21106, 21067> velocity=<-2, -2>
position=< 42047, 21063> velocity=<-4, -2>
position=<-20794, -31321> velocity=< 2, 3>
position=< 10611, -20838> velocity=<-1, 2>
position=<-41742, -41793> velocity=< 4, 4>
position=<-41747, -31321> velocity=< 4, 3>
position=<-20838, -10367> velocity=< 2, 1>
position=<-52274, -31314> velocity=< 5, 3>
position=< 52526, -20841> velocity=<-5, 2>
position=< 21066, 42017> velocity=<-2, -4>
position=<-10354, -41789> velocity=< 1, 4>
position=<-10326, 31535> velocity=< 1, -3>
position=< 42062, -20837> velocity=<-4, 2>
position=<-10346, 31539> velocity=< 1, -3>
position=< 21090, 52494> velocity=<-2, -5>
position=<-20829, -41797> velocity=< 2, 4>
position=< 21077, 21068> velocity=<-2, -2>
position=<-20814, -20845> velocity=< 2, 2>
position=< 21103, -10366> velocity=<-2, 1>
position=<-52250, -52266> velocity=< 5, 5>
position=<-10341, 31537> velocity=< 1, -3>
position=< 10603, -20839> velocity=<-1, 2>
position=<-41782, -20839> velocity=< 4, 2>
position=<-52226, -41790> velocity=< 5, 4>
position=< 31586, -41791> velocity=<-3, 4>
position=<-20790, 31543> velocity=< 2, -3>
position=< 31575, -41793> velocity=<-3, 4>
position=< 52490, 42011> velocity=<-5, -4>
position=<-41741, 31535> velocity=< 4, -3>
position=<-10318, -31316> velocity=< 1, 3>
position=< 10585, -10369> velocity=<-1, 1>
position=< 10606, 10591> velocity=<-1, -1>
position=< 52510, 31544> velocity=<-5, -3>
position=<-20846, -20840> velocity=< 2, 2>
position=< 21058, 52490> velocity=<-2, -5>
position=<-10367, -31321> velocity=< 1, 3>
position=<-41774, 21062> velocity=< 4, -2>
position=<-52254, 52492> velocity=< 5, -5>
position=< 10640, -10360> velocity=<-1, 1>
position=<-20846, -20839> velocity=< 2, 2>
position=<-10341, -52272> velocity=< 1, 5>
position=<-10330, -10363> velocity=< 1, 1>
position=<-10353, -41797> velocity=< 1, 4>
position=<-41782, 52494> velocity=< 4, -5>
position=<-41761, 10584> velocity=< 4, -1>
position=< 42018, -10369> velocity=<-4, 1>
position=<-10365, 42014> velocity=< 1, -4>
position=<-10318, 42018> velocity=< 1, -4>
position=<-52242, -31315> velocity=< 5, 3>
position=< 21095, -20838> velocity=<-2, 2>
position=< 21058, -10368> velocity=<-2, 1>
position=<-31282, 10584> velocity=< 3, -1>
position=<-31322, -31321> velocity=< 3, 3>
position=< 21117, -52273> velocity=<-2, 5>
position=< 31543, 52496> velocity=<-3, -5>
position=< 52538, 21066> velocity=<-5, -2>
position=< 10582, 52492> velocity=<-1, -5>
position=<-41777, -52265> velocity=< 4, 5>
position=<-10357, -52264> velocity=< 1, 5>
position=< 42053, 31535> velocity=<-4, -3>
position=< 42028, -20845> velocity=<-4, 2>
position=<-10326, -20845> velocity=< 1, 2>
position=< 10638, 10585> velocity=<-1, -1>
position=< 31591, 42020> velocity=<-3, -4>
position=< 52505, -52273> velocity=<-5, 5>
position=<-10338, 21059> velocity=< 1, -2>
position=<-10341, 42012> velocity=< 1, -4>
position=< 31566, 31544> velocity=<-3, -3>
position=<-52215, -10360> velocity=< 5, 1>
position=< 52526, 21060> velocity=<-5, -2>
position=< 10638, 10589> velocity=<-1, -1>
position=< 42034, 10584> velocity=<-4, -1>
position=< 31553, -52264> velocity=<-3, 5>
position=<-10353, -10360> velocity=< 1, 1>
position=<-20795, -31321> velocity=< 2, 3>
position=<-20830, 42014> velocity=< 2, -4>
position=< 10606, -31319> velocity=<-1, 3>
position=<-20814, -41796> velocity=< 2, 4>
position=<-52239, 31539> velocity=< 5, -3>
position=< 31586, 10586> velocity=<-3, -1>
position=<-10318, 31540> velocity=< 1, -3>
position=< 10643, 10584> velocity=<-1, -1>
position=< 42042, 10592> velocity=<-4, -1>
position=<-41749, -10360> velocity=< 4, 1>
position=<-41774, 52490> velocity=< 4, -5>
position=< 31590, 31536> velocity=<-3, -3>
position=<-10350, -41789> velocity=< 1, 4>
position=< 42047, -52264> velocity=<-4, 5>
position=< 10631, -20836> velocity=<-1, 2>
position=< 52542, -52270> velocity=<-5, 5>
position=<-52266, 21062> velocity=< 5, -2>
position=<-52258, -10363> velocity=< 5, 1>
position=<-41793, 42016> velocity=< 4, -4>
position=<-31277, -10367> velocity=< 3, 1>
position=< 52510, -52270> velocity=<-5, 5>
position=<-20842, -52269> velocity=< 2, 5>
position=< 10630, -10362> velocity=<-1, 1>
position=< 21082, 42011> velocity=<-2, -4>
position=< 21062, 52487> velocity=<-2, -5>
position=< 52503, 31544> velocity=<-5, -3>
position=< 10587, -31318> velocity=<-1, 3>
position=<-41766, 42015> velocity=< 4, -4>
position=<-52245, -52267> velocity=< 5, 5>
position=<-31277, 31538> velocity=< 3, -3>
position=<-10362, 10583> velocity=< 1, -1>
position=< 31593, 52496> velocity=<-3, -5>
position=< 21108, -20836> velocity=<-2, 2>
position=<-52266, 52490> velocity=< 5, -5>
position=< 21094, -10365> velocity=<-2, 1>
position=< 31575, -20841> velocity=<-3, 2>
position=<-31285, 42013> velocity=< 3, -4>
position=< 10625, 10583> velocity=<-1, -1>
position=<-10313, -52264> velocity=< 1, 5>
position=< 42036, 42014> velocity=<-4, -4>
position=< 31561, 10589> velocity=<-3, -1>
position=< 10624, -41793> velocity=<-1, 4>
position=<-52274, -31314> velocity=< 5, 3>
position=< 10587, -10361> velocity=<-1, 1>
position=< 31545, -41788> velocity=<-3, 4>
position=< 21063, -20838> velocity=<-2, 2>
position=<-52234, -41790> velocity=< 5, 4>
position=< 52523, 52490> velocity=<-5, -5>
position=< 42047, -10361> velocity=<-4, 1>
position=<-41774, 10587> velocity=< 4, -1>
position=<-52274, 42013> velocity=< 5, -4>
position=< 21106, 52494> velocity=<-2, -5>
position=< 52546, -10360> velocity=<-5, 1>
position=< 10633, -20836> velocity=<-1, 2>
position=<-10370, -20844> velocity=< 1, 2>
position=< 42030, -20837> velocity=<-4, 2>
position=< 21075, 42020> velocity=<-2, -4>
position=<-20820, 21063> velocity=< 2, -2>
position=< 10622, 21062> velocity=<-1, -2>
position=< 42066, 21065> velocity=<-4, -2>
position=< 52528, -52273> velocity=<-5, 5>
position=< 10610, -31313> velocity=<-1, 3>
position=<-10370, -20837> velocity=< 1, 2>
position=<-20788, 31535> velocity=< 2, -3>
position=<-20844, 52487> velocity=< 2, -5>
position=< 52510, -41788> velocity=<-5, 4>
position=< 31566, -20844> velocity=<-3, 2>
position=< 42047, 42012> velocity=<-4, -4>
position=<-31282, -41789> velocity=< 3, 4>
position=<-41742, 52493> velocity=< 4, -5>
position=<-41758, 21061> velocity=< 4, -2>
position=< 31579, 52489> velocity=<-3, -5>
position=<-31317, 42013> velocity=< 3, -4>
position=< 10611, 21059> velocity=<-1, -2>
position=< 31535, -41797> velocity=<-3, 4>
position=<-10338, -10365> velocity=< 1, 1>
position=<-52261, 31544> velocity=< 5, -3>
position=<-10368, -10369> velocity=< 1, 1>
position=<-41746, 10587> velocity=< 4, -1>
position=< 31571, 31535> velocity=<-3, -3>
position=<-20786, -10360> velocity=< 2, 1>
position=<-52258, 10584> velocity=< 5, -1>
position=< 52494, -31315> velocity=<-5, 3>
position=<-31317, 52492> velocity=< 3, -5>
position=< 31566, -20839> velocity=<-3, 2>
position=<-20825, -52264> velocity=< 2, 5>
position=< 10614, -10366> velocity=<-1, 1>
position=<-31277, -10366> velocity=< 3, 1>
position=< 52488, 42020> velocity=<-5, -4>
position=<-41795, 31539> velocity=< 4, -3>
position=< 52520, -52269> velocity=<-5, 5>
position=< 21070, 52496> velocity=<-2, -5>
position=<-31293, -31315> velocity=< 3, 3>
position=<-10314, 42016> velocity=< 1, -4>
position=<-20814, -31319> velocity=< 2, 3>
position=<-41777, -52265> velocity=< 4, 5>
position=< 21079, 52494> velocity=<-2, -5>
position=< 21101, -10369> velocity=<-2, 1>
position=<-20821, 31537> velocity=< 2, -3>
position=<-20802, 21063> velocity=< 2, -2>
position=< 52531, 21060> velocity=<-5, -2>
position=<-20828, 52496> velocity=< 2, -5>
position=< 10590, 52488> velocity=<-1, -5>
position=< 52511, 31537> velocity=<-5, -3>
position=<-20817, -20839> velocity=< 2, 2>
position=< 21082, 10587> velocity=<-2, -1>
position=< 52530, -31321> velocity=<-5, 3>
position=<-41782, -41795> velocity=< 4, 4>
position=< 42034, -10360> velocity=<-4, 1>
position=<-41765, -20841> velocity=< 4, 2>
position=<-41788, 42020> velocity=< 4, -4>
position=< 42047, 31544> velocity=<-4, -3>
position=<-31314, -41793> velocity=< 3, 4>
position=< 10611, 31543> velocity=<-1, -3>
position=< 10611, -10360> velocity=<-1, 1>
position=< 31542, -41795> velocity=<-3, 4>
position=< 42050, -52269> velocity=<-4, 5>
position=< 31592, 10592> velocity=<-3, -1>
position=<-10317, 21059> velocity=< 1, -2>
position=< 52544, -31321> velocity=<-5, 3>
position=<-31282, 52488> velocity=< 3, -5>
position=<-52242, 31535> velocity=< 5, -3>
position=<-31290, -52271> velocity=< 3, 5>
position=<-52256, -31312> velocity=< 5, 3>
position=<-31306, -10364> velocity=< 3, 1>
position=< 21077, -20840> velocity=<-2, 2>
position=< 10598, -10365> velocity=<-1, 1>
position=<-41761, -20837> velocity=< 4, 2>
position=< 31571, -31315> velocity=<-3, 3>
position=<-41772, 10587> velocity=< 4, -1>
position=<-41750, 21067> velocity=< 4, -2>
position=< 31539, -31314> velocity=<-3, 3>
position=< 10619, 10590> velocity=<-1, -1>
position=<-10341, 31539> velocity=< 1, -3>
position=<-20814, -52268> velocity=< 2, 5>
position=<-20814, 21066> velocity=< 2, -2>
position=< 10614, 10585> velocity=<-1, -1>
position=<-41774, 21061> velocity=< 4, -2>
position=< 10622, -20840> velocity=<-1, 2>
position=<-41793, 31541> velocity=< 4, -3>
position=<-20841, 21061> velocity=< 2, -2>
position=< 10622, -41792> velocity=<-1, 4>
position=<-31317, 10590> velocity=< 3, -1>
position=<-10341, -10369> velocity=< 1, 1>
position=<-31322, 42018> velocity=< 3, -4>
position=<-20838, -20840> velocity=< 2, 2>
position=<-20844, -10360> velocity=< 2, 1>
position=< 10634, -41789> velocity=<-1, 4>
position=< 42010, 52496> velocity=<-4, -5>
position=<-41777, 31542> velocity=< 4, -3>
position=< 10602, -31316> velocity=<-1, 3>
position=< 52538, 42015> velocity=<-5, -4>
position=< 21083, 52489> velocity=<-2, -5>
position=< 21066, 21060> velocity=<-2, -2>
position=<-20805, -41793> velocity=< 2, 4>
position=< 21087, -41788> velocity=<-2, 4>
position=< 52514, 21066> velocity=<-5, -2>
position=< 52515, -41790> velocity=<-5, 4>
position=< 21066, -31313> velocity=<-2, 3>
position=<-41753, -52272> velocity=< 4, 5>
position=< 10587, 31537> velocity=<-1, -3>
position=<-20814, -31312> velocity=< 2, 3>
position=< 10627, 52488> velocity=<-1, -5>
position=< 52523, -20837> velocity=<-5, 2>
position=<-41774, 52492> velocity=< 4, -5>
position=<-52269, 21062> velocity=< 5, -2>
position=<-31282, 10583> velocity=< 3, -1>
position=<-31322, 21059> velocity=< 3, -2>
position=<-31302, -20845> velocity=< 3, 2>
position=< 52526, -10360> velocity=<-5, 1>
position=< 31536, -41793> velocity=<-3, 4>
position=<-20809, 42015> velocity=< 2, -4>
position=< 31542, -52271> velocity=<-3, 5>
position=< 52486, -10363> velocity=<-5, 1>
position=<-10311, 42011> velocity=< 1, -4>
position=<-41761, 10584> velocity=< 4, -1>
position=< 42050, -41789> velocity=<-4, 4>
position=< 52515, -20838> velocity=<-5, 2>
position=< 21058, -20841> velocity=<-2, 2>
position=< 31586, -31320> velocity=<-3, 3>
position=<-41766, 31541> velocity=< 4, -3>
position=<-41769, 31540> velocity=< 4, -3>
position=<-52250, -31320> velocity=< 5, 3>
position=< 52543, 42020> velocity=<-5, -4>
position=< 42052, -20841> velocity=<-4, 2>
position=< 52499, 31544> velocity=<-5, -3>
position=< 52515, -20842> velocity=<-5, 2>
position=< 31537, 31535> velocity=<-3, -3>
position=< 52490, -20836> velocity=<-5, 2>
position=< 52518, 21066> velocity=<-5, -2>
position=< 31590, 52492> velocity=<-3, -5>
position=<-10310, -10369> velocity=< 1, 1>
position=< 31582, 42019> velocity=<-3, -4>
position=<-10368, -52269> velocity=< 1, 5>
position=< 31539, -20844> velocity=<-3, 2>
position=< 10590, -41796> velocity=<-1, 4>
position=< 52538, -20837> velocity=<-5, 2>
position=<-41737, 31543> velocity=< 4, -3>
position=<-52271, -31312> velocity=< 5, 3>
position=< 31559, 42012> velocity=<-3, -4>
position=<-10330, 31542> velocity=< 1, -3>
position=<-41797, 31539> velocity=< 4, -3>
position=< 10639, 52487> velocity=<-1, -5>
position=< 31566, -41792> velocity=<-3, 4>
position=< 42068, 42020> velocity=<-4, -4>
position=< 42066, -20840> velocity=<-4, 2>
position=< 10583, -52264> velocity=<-1, 5>
position=< 21066, 31543> velocity=<-2, -3>
position=< 10606, -41790> velocity=<-1, 4>
position=< 42042, -41793> velocity=<-4, 4>
position=< 42038, -31314> velocity=<-4, 3>
position=<-20806, -20842> velocity=< 2, 2>
position=< 42010, -10366> velocity=<-4, 1>
position=<-41795, -20841> velocity=< 4, 2>
position=< 10633, 21059> velocity=<-1, -2>
position=< 52527, -10369> velocity=<-5, 1>
position=< 21109, -31312> velocity=<-2, 3>
position=<-52224, 52496> velocity=< 5, -5>
position=< 10583, 10592> velocity=<-1, -1>
EOT;
$input_strings_array = explode(PHP_EOL, $input);
$points = [];
foreach ($input_strings_array as $input_string) {
preg_match("/position=< ?(?<px>[\-0-9]+), {1,2}(?<py>[\-0-9]+)> velocity=< ?(?<vx>[\-0-9]+), {1,2}(?<vy>[\-0-9]+)>/", $input_string, $matches);
$points[] = [
'position' => [
'x' => $matches['px'],
'y' => $matches['py'],
],
'velocity' => [
'x' => $matches['vx'],
'y' => $matches['vy'],
],
];
}
function get_points($points, &$smallest_grid, &$second) {
$grid = [];
$min_x = null;
$min_y = null;
$max_x = null;
$max_y = null;
foreach ($points as $point) {
$x = $point['position']['x'];
$y = $point['position']['y'];
if ($x < $min_x || $min_x === null) {
$min_x = $x;
}
if ($y < $min_y || $min_y === null) {
$min_y = $y;
}
if ($x > $max_x || $max_x === null) {
$max_x = $x;
}
if ($y > $max_y || $max_y === null) {
$max_y = $y;
}
$grid[$x][$y] = 1;
}
$area = ($max_x - $min_x) * ($max_y - $min_y);
if ($area < $smallest_grid['area'] || $smallest_grid['area'] === null) {
$smallest_grid = [
'grid' => $grid,
'area' => $area,
'limits' => [
'min_x' => $min_x,
'min_y' => $min_y,
'max_x' => $max_x,
'max_y' => $max_y,
],
'second' => $second,
];
}
$second++;
return $area;
}
function move_points(&$points) {
foreach ($points as &$point) {
$point['position']['x'] += $point['velocity']['x'];
$point['position']['y'] += $point['velocity']['y'];
}
}
$smallest_grid = [
'area' => null,
];
$last_smallest_grid_area = null;
$second = 0;
while ($smallest_grid['area'] >= $last_smallest_grid_area || $smallest_grid['area'] === null) {
$last_smallest_grid_area = get_points($points, $smallest_grid, $second);
move_points($points);
}
echo $smallest_grid['second'];