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
Point = Struct.new(*%i[position velocity])

points = <<~POINTS
position=< 21992, -10766> velocity=<-2,  1>
position=<-43366, -21661> velocity=< 4,  2>
position=<-10714, -21661> velocity=< 1,  2>
position=< 21993,  32773> velocity=<-2, -3>
position=< 43745,  32772> velocity=<-4, -3>
position=< 43742,  43664> velocity=<-4, -4>
position=<-43327,  43662> velocity=< 4, -4>
position=<-43373,  43655> velocity=< 4, -4>
position=<-10677,  32773> velocity=< 1, -3>
position=<-43324,  43664> velocity=< 4, -4>
position=<-32447,  43664> velocity=< 3, -4>
position=< 21946, -54317> velocity=<-2,  5>
position=< 11051, -10772> velocity=<-1,  1>
position=< 32824, -21652> velocity=<-3,  2>
position=< 11092, -21655> velocity=<-1,  2>
position=< 32863,  11002> velocity=<-3, -1>
position=<-21562,  10997> velocity=< 2, -1>
position=<-10725,  43662> velocity=< 1, -4>
position=< 11074,  11006> velocity=<-1, -1>
position=<-54209, -10768> velocity=< 5,  1>
position=< 43710, -10774> velocity=<-4,  1>
position=< 54615,  54544> velocity=<-5, -5>
position=< 32859, -21659> velocity=<-3,  2>
position=< 11052,  10997> velocity=<-1, -1>
position=< 21957, -32542> velocity=<-2,  3>
position=<-10714,  10997> velocity=< 1, -1>
position=< 32847, -21652> velocity=<-3,  2>
position=<-21561, -32547> velocity=< 2,  3>
position=< 11074,  21887> velocity=<-1, -2>
position=<-43339, -21656> velocity=< 4,  2>
position=< 54643,  54541> velocity=<-5, -5>
position=<-32477, -32547> velocity=< 3,  3>
position=<-21571,  11005> velocity=< 2, -1>
position=<-10701, -54314> velocity=< 1,  5>
position=<-21584, -43429> velocity=< 2,  4>
position=<-21595, -32542> velocity=< 2,  3>
position=< 54594,  21887> velocity=<-5, -2>
position=< 21970,  32774> velocity=<-2, -3>
position=<-54237, -43425> velocity=< 5,  4>
position=< 43732, -54319> velocity=<-4,  5>
position=<-32488, -10766> velocity=< 3,  1>
position=<-32473, -43433> velocity=< 3,  4>
position=<-43370,  10998> velocity=< 4, -1>
position=<-43347,  32777> velocity=< 4, -3>
position=<-32460,  11002> velocity=< 3, -1>
position=< 21962, -21659> velocity=<-2,  2>
position=< 21981,  21889> velocity=<-2, -2>
position=<-32437, -21656> velocity=< 3,  2>
position=<-43347, -21653> velocity=< 4,  2>
position=< 54652,  54541> velocity=<-5, -5>
position=<-21606, -54319> velocity=< 2,  5>
position=< 11055,  54549> velocity=<-1, -5>
position=<-54259,  21892> velocity=< 5, -2>
position=< 54636,  32777> velocity=<-5, -3>
position=<-54224,  11006> velocity=< 5, -1>
position=<-10723, -54310> velocity=< 1,  5>
position=< 32856,  54547> velocity=<-3, -5>
position=< 11052,  11006> velocity=<-1, -1>
position=<-10674, -54319> velocity=< 1,  5>
position=< 11071, -54317> velocity=<-1,  5>
position=< 11075,  54541> velocity=<-1, -5>
position=<-54226,  21888> velocity=< 5, -2>
position=< 21962,  32774> velocity=<-2, -3>
position=<-54251,  21883> velocity=< 5, -2>
position=< 54628, -32540> velocity=<-5,  3>
position=< 11087,  32770> velocity=<-1, -3>
position=< 54594,  43659> velocity=<-5, -4>
position=< 43748,  32778> velocity=<-4, -3>
position=< 32854,  32778> velocity=<-3, -3>
position=< 54639, -32542> velocity=<-5,  3>
position=<-43367, -43425> velocity=< 4,  4>
position=< 54651, -21660> velocity=<-5,  2>
position=< 11087,  10999> velocity=<-1, -1>
position=<-43379,  32778> velocity=< 4, -3>
position=< 43737, -32543> velocity=<-4,  3>
position=<-43382,  43655> velocity=< 4, -4>
position=<-10684, -43433> velocity=< 1,  4>
position=<-54250,  54550> velocity=< 5, -5>
position=< 11095, -21657> velocity=<-1,  2>
position=< 32836,  10997> velocity=<-3, -1>
position=<-54209, -32540> velocity=< 5,  3>
position=< 11050,  21892> velocity=<-1, -2>
position=<-21587,  10999> velocity=< 2, -1>
position=< 43725,  54550> velocity=<-4, -5>
position=<-54221,  32771> velocity=< 5, -3>
position=< 11087,  54546> velocity=<-1, -5>
position=< 11088, -32538> velocity=<-1,  3>
position=< 21986, -10774> velocity=<-2,  1>
position=< 11071,  10998> velocity=<-1, -1>
position=< 54631,  43661> velocity=<-5, -4>
position=<-32462,  21892> velocity=< 3, -2>
position=<-32464, -43433> velocity=< 3,  4>
position=<-32485, -10772> velocity=< 3,  1>
position=< 43707,  21888> velocity=<-4, -2>
position=< 54602, -32538> velocity=<-5,  3>
position=<-43335, -32546> velocity=< 4,  3>
position=< 54639, -10769> velocity=<-5,  1>
position=<-21551, -21656> velocity=< 2,  2>
position=<-43323, -21658> velocity=< 4,  2>
position=< 43718,  32770> velocity=<-4, -3>
position=<-10709,  43662> velocity=< 1, -4>
position=< 43749,  10997> velocity=<-4, -1>
position=< 32859,  11002> velocity=<-3, -1>
position=< 32839, -43433> velocity=<-3,  4>
position=< 21975, -10775> velocity=<-2,  1>
position=< 11088,  11006> velocity=<-1, -1>
position=<-10716,  21892> velocity=< 1, -2>
position=<-21560, -32538> velocity=< 2,  3>
position=<-21591,  54541> velocity=< 2, -5>
position=< 21968, -21661> velocity=<-2,  2>
position=<-21579, -32545> velocity=< 2,  3>
position=<-10721, -32547> velocity=< 1,  3>
position=<-32468, -43430> velocity=< 3,  4>
position=<-54260, -43427> velocity=< 5,  4>
position=<-43333,  10997> velocity=< 4, -1>
position=<-21579,  21884> velocity=< 2, -2>
position=<-43343,  54545> velocity=< 4, -5>
position=<-10708, -43424> velocity=< 1,  4>
position=< 54601, -21661> velocity=<-5,  2>
position=<-32460, -21654> velocity=< 3,  2>
position=< 32848, -10770> velocity=<-3,  1>
position=<-54209,  21886> velocity=< 5, -2>
position=< 32844,  32773> velocity=<-3, -3>
position=< 32839,  32778> velocity=<-3, -3>
position=<-43374, -43427> velocity=< 4,  4>
position=< 32827,  43662> velocity=<-3, -4>
position=<-21583, -43433> velocity=< 2,  4>
position=< 32819, -54311> velocity=<-3,  5>
position=<-43371,  43655> velocity=< 4, -4>
position=<-32437,  10997> velocity=< 3, -1>
position=<-21566,  43664> velocity=< 2, -4>
position=<-43371, -21658> velocity=< 4,  2>
position=< 43707, -32542> velocity=<-4,  3>
position=<-21551,  11003> velocity=< 2, -1>
position=<-21599,  11006> velocity=< 2, -1>
position=< 11057,  43660> velocity=<-1, -4>
position=<-21571, -10773> velocity=< 2,  1>
position=< 54609, -43424> velocity=<-5,  4>
position=<-32473, -54311> velocity=< 3,  5>
position=<-21587, -54310> velocity=< 2,  5>
position=<-43370, -54310> velocity=< 4,  5>
position=< 54627,  21883> velocity=<-5, -2>
position=< 54620,  32777> velocity=<-5, -3>
position=<-32473, -54316> velocity=< 3,  5>
position=< 54615,  21892> velocity=<-5, -2>
position=<-21579, -54313> velocity=< 2,  5>
position=<-43370, -21652> velocity=< 4,  2>
position=<-10709, -54313> velocity=< 1,  5>
position=< 43737,  32777> velocity=<-4, -3>
position=< 32843,  11000> velocity=<-3, -1>
position=<-43383, -32547> velocity=< 4,  3>
position=<-43359,  43661> velocity=< 4, -4>
position=<-10720, -43433> velocity=< 1,  4>
position=< 54620,  32772> velocity=<-5, -3>
position=< 43739,  21892> velocity=<-4, -2>
position=< 54615,  43656> velocity=<-5, -4>
position=<-32471,  32769> velocity=< 3, -3>
position=<-54232,  21884> velocity=< 5, -2>
position=< 11107, -10769> velocity=<-1,  1>
position=<-43383,  21890> velocity=< 4, -2>
position=< 21951,  54550> velocity=<-2, -5>
position=< 43747, -21661> velocity=<-4,  2>
position=<-32494, -43433> velocity=< 3,  4>
position=<-21563, -54316> velocity=< 2,  5>
position=<-54224,  11002> velocity=< 5, -1>
position=<-43372, -32538> velocity=< 4,  3>
position=<-43342, -21652> velocity=< 4,  2>
position=< 11079,  54548> velocity=<-1, -5>
position=< 11106, -32538> velocity=<-1,  3>
position=<-32488, -54310> velocity=< 3,  5>
position=< 43748,  43664> velocity=<-4, -4>
position=< 11063,  43658> velocity=<-1, -4>
position=<-54240,  54543> velocity=< 5, -5>
position=< 21983,  43655> velocity=<-2, -4>
position=<-21551,  32773> velocity=< 2, -3>
position=<-21607, -32547> velocity=< 2,  3>
position=<-10709, -54315> velocity=< 1,  5>
position=< 21978,  32775> velocity=<-2, -3>
position=< 32864, -21653> velocity=<-3,  2>
position=<-32464,  43655> velocity=< 3, -4>
position=< 32848, -54312> velocity=<-3,  5>
position=< 54639,  32772> velocity=<-5, -3>
position=<-43380, -21657> velocity=< 4,  2>
position=<-43371,  54544> velocity=< 4, -5>
position=< 11079, -43429> velocity=<-1,  4>
position=< 11099,  43664> velocity=<-1, -4>
position=< 54591, -21653> velocity=<-5,  2>
position=<-10715, -54310> velocity=< 1,  5>
position=< 21949, -10768> velocity=<-2,  1>
position=<-21606,  43657> velocity=< 2, -4>
position=<-54256, -21660> velocity=< 5,  2>
position=<-54242, -54319> velocity=< 5,  5>
position=< 21985, -21661> velocity=<-2,  2>
position=<-32465, -32542> velocity=< 3,  3>
position=<-54250, -43433> velocity=< 5,  4>
position=< 43742,  11005> velocity=<-4, -1>
position=<-32494, -10775> velocity=< 3,  1>
position=< 32843,  11004> velocity=<-3, -1>
position=<-21586,  43664> velocity=< 2, -4>
position=<-10723,  21883> velocity=< 1, -2>
position=<-21552, -43433> velocity=< 2,  4>
position=<-43358, -10775> velocity=< 4,  1>
position=< 32872, -10774> velocity=<-3,  1>
position=<-10680, -54312> velocity=< 1,  5>
position=<-54237, -32545> velocity=< 5,  3>
position=< 54651,  10997> velocity=<-5, -1>
position=<-32489, -43425> velocity=< 3,  4>
position=<-54243, -43429> velocity=< 5,  4>
position=< 54626, -54314> velocity=<-5,  5>
position=< 11107, -21656> velocity=<-1,  2>
position=<-21575,  10997> velocity=< 2, -1>
position=< 43716,  11001> velocity=<-4, -1>
position=<-10720,  32771> velocity=< 1, -3>
position=< 11092,  43660> velocity=<-1, -4>
position=< 54631, -21658> velocity=<-5,  2>
position=< 11068,  11005> velocity=<-1, -1>
position=< 43708, -21652> velocity=<-4,  2>
position=<-10674, -32538> velocity=< 1,  3>
position=< 11051,  11006> velocity=<-1, -1>
position=< 11063, -54316> velocity=<-1,  5>
position=< 11056,  32769> velocity=<-1, -3>
position=<-21587,  21884> velocity=< 2, -2>
position=< 11082,  43660> velocity=<-1, -4>
position=< 43726,  43663> velocity=<-4, -4>
position=< 54633,  54550> velocity=<-5, -5>
position=< 11071,  43663> velocity=<-1, -4>
position=<-43367,  43660> velocity=< 4, -4>
position=<-21563,  11004> velocity=< 2, -1>
position=< 54639,  54542> velocity=<-5, -5>
position=< 32848, -32541> velocity=<-3,  3>
position=<-54209,  54543> velocity=< 5, -5>
position=<-43370,  21892> velocity=< 4, -2>
position=< 54627, -21661> velocity=<-5,  2>
position=< 54612,  54542> velocity=<-5, -5>
position=< 11103,  43663> velocity=<-1, -4>
position=< 32876,  21892> velocity=<-3, -2>
position=< 21978, -21660> velocity=<-2,  2>
position=< 54592,  54547> velocity=<-5, -5>
position=<-43354, -43428> velocity=< 4,  4>
position=< 54615,  11001> velocity=<-5, -1>
position=<-10665, -43430> velocity=< 1,  4>
position=<-21566, -10766> velocity=< 2,  1>
position=< 43753, -43431> velocity=<-4,  4>
position=< 43739, -32547> velocity=<-4,  3>
position=<-43354, -43425> velocity=< 4,  4>
position=<-10669, -21654> velocity=< 1,  2>
position=< 54644, -10767> velocity=<-5,  1>
position=< 54612, -43432> velocity=<-5,  4>
position=< 32829,  54546> velocity=<-3, -5>
position=< 54594, -10766> velocity=<-5,  1>
position=< 54626, -32547> velocity=<-5,  3>
position=<-32441,  11004> velocity=< 3, -1>
position=< 43738,  11006> velocity=<-4, -1>
position=<-43351, -32541> velocity=< 4,  3>
position=< 43732, -10766> velocity=<-4,  1>
position=< 43749,  32777> velocity=<-4, -3>
position=<-32460, -21656> velocity=< 3,  2>
position=< 54628,  10998> velocity=<-5, -1>
position=< 21949,  32777> velocity=<-2, -3>
position=<-43370, -21661> velocity=< 4,  2>
position=<-10682, -43433> velocity=< 1,  4>
position=<-32441, -10767> velocity=< 3,  1>
position=< 21973,  21888> velocity=<-2, -2>
position=< 21973,  11000> velocity=<-2, -1>
position=< 11107, -10771> velocity=<-1,  1>
position=<-10680, -10769> velocity=< 1,  1>
position=< 32867,  54542> velocity=<-3, -5>
position=<-10701,  21887> velocity=< 1, -2>
position=<-54250, -10775> velocity=< 5,  1>
position=< 54615, -10768> velocity=<-5,  1>
position=<-21550,  21883> velocity=< 2, -2>
position=<-43346,  21890> velocity=< 4, -2>
position=<-54216, -54318> velocity=< 5,  5>
position=<-43357,  11006> velocity=< 4, -1>
position=<-10692, -10766> velocity=< 1,  1>
position=< 21944,  21892> velocity=<-2, -2>
position=< 54623, -10772> velocity=<-5,  1>
position=< 43749,  43663> velocity=<-4, -4>
position=< 43740,  21888> velocity=<-4, -2>
position=<-54224,  32776> velocity=< 5, -3>
position=<-54240,  43657> velocity=< 5, -4>
position=<-21592, -54310> velocity=< 2,  5>
position=< 54599,  21883> velocity=<-5, -2>
position=< 32830, -10771> velocity=<-3,  1>
position=< 21961,  54550> velocity=<-2, -5>
position=<-54258, -32543> velocity=< 5,  3>
position=< 11047, -10768> velocity=<-1,  1>
position=< 11047, -21653> velocity=<-1,  2>
position=< 43709,  21883> velocity=<-4, -2>
position=< 43729, -10766> velocity=<-4,  1>
position=<-32481, -54317> velocity=< 3,  5>
position=<-32481, -54318> velocity=< 3,  5>
position=< 43750, -54311> velocity=<-4,  5>
position=<-43325,  11006> velocity=< 4, -1>
position=<-43331,  21892> velocity=< 4, -2>
position=< 32867, -54311> velocity=<-3,  5>
position=< 32847, -10771> velocity=<-3,  1>
position=< 43731,  43664> velocity=<-4, -4>
position=< 21965, -10770> velocity=<-2,  1>
position=<-43362,  21884> velocity=< 4, -2>
position=< 43742,  43663> velocity=<-4, -4>
position=< 54634,  54541> velocity=<-5, -5>
position=<-32437,  10999> velocity=< 3, -1>
position=< 54631, -21654> velocity=<-5,  2>
position=<-54220,  11006> velocity=< 5, -1>
position=< 54607,  54546> velocity=<-5, -5>
position=<-43342,  43655> velocity=< 4, -4>
position=< 21973,  32773> velocity=<-2, -3>
position=<-32496, -32538> velocity=< 3,  3>
position=< 54599, -21652> velocity=<-5,  2>
position=<-54267,  54541> velocity=< 5, -5>
position=< 21949, -10768> velocity=<-2,  1>
position=< 11071, -10773> velocity=<-1,  1>
position=< 32879,  54549> velocity=<-3, -5>
position=<-43351, -54316> velocity=< 4,  5>
position=<-54237,  10999> velocity=< 5, -1>
position=<-54245,  32774> velocity=< 5, -3>
position=<-43375,  54549> velocity=< 4, -5>
position=< 54623, -21658> velocity=<-5,  2>
position=<-43375,  32778> velocity=< 4, -3>
position=<-21551, -21660> velocity=< 2,  2>
position=< 43741, -21656> velocity=<-4,  2>
position=<-54240,  32775> velocity=< 5, -3>
position=< 21984, -10766> velocity=<-2,  1>
position=<-10720, -21659> velocity=< 1,  2>
position=< 32824,  32770> velocity=<-3, -3>
position=< 11057,  32774> velocity=<-1, -3>
position=<-21561,  54550> velocity=< 2, -5>
position=< 11071, -21653> velocity=<-1,  2>
position=<-32497, -54310> velocity=< 3,  5>
position=< 32871,  43655> velocity=<-3, -4>
position=<-43371,  32778> velocity=< 4, -3>
position=<-21582, -54318> velocity=< 2,  5>
position=< 11076, -21658> velocity=<-1,  2>
position=< 43749,  43655> velocity=<-4, -4>
position=< 43754, -54319> velocity=<-4,  5>
POINTS

points = points.chomp.lines.map(&:chomp).map {|line|
  line =~ /position=<\s*(-?\d+),\s*(-?\d+)> velocity=<\s*(-?\d+),\s*(-?\d+)>/
  Point.new([$1, $2].map(&:to_i), [$3, $4].map(&:to_i))
}

def print_points(points)
  min_x = points.map(&:position).map(&:first).min
  max_x = points.map(&:position).map(&:first).max
  min_y = points.map(&:position).map(&:last).min
  max_y = points.map(&:position).map(&:last).max

  # return if max_x - min_x > 500
  return if max_y - min_y > 10

  h = points.each.with_object(Hash.new(?.)) {|point, h|
    h[point.position] = ?#
  }

  (min_y..max_y).each {|y|
    (min_x..max_x).each {|x|
      print h[[x,y]]
    }
    puts
  }

  gets
end

i = 0
loop do
  print_points(points)
  puts i
  points.each {|point|
    point.position[0] += point.velocity[0]
    point.position[1] += point.velocity[1]
  }
  i += 1
end