cem 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/examples/aoc2018/.gitignore +2 -0
  3. data/examples/aoc2018/day10.rb +61 -0
  4. data/examples/aoc2018/day11.rb +66 -0
  5. data/examples/aoc2018/day12.rb +61 -0
  6. data/examples/aoc2018/day13.rb +167 -0
  7. data/examples/aoc2018/day14.rb +31 -0
  8. data/examples/aoc2018/day14_2.rb +71 -0
  9. data/examples/aoc2018/day15.rb +271 -0
  10. data/examples/aoc2018/day16.rb +158 -0
  11. data/examples/aoc2018/day17.rb +203 -0
  12. data/examples/aoc2018/day18.rb +113 -0
  13. data/examples/aoc2018/day18_rspec.rb +131 -0
  14. data/examples/aoc2018/day19.rb +145 -0
  15. data/examples/aoc2018/day20.rb +103 -0
  16. data/examples/aoc2018/day21.rb +158 -0
  17. data/examples/aoc2018/day21_v2.rb +137 -0
  18. data/examples/aoc2018/day21_v3.rb +157 -0
  19. data/examples/aoc2018/day21_v4.rb +141 -0
  20. data/examples/aoc2018/day22.rb +212 -0
  21. data/examples/aoc2018/day23.rb +148 -0
  22. data/examples/aoc2018/day24.rb +156 -0
  23. data/examples/aoc2018/day25.rb +52 -0
  24. data/examples/aoc2018/day9.rb +51 -0
  25. data/examples/aoc2018/day9_circular.rb +125 -0
  26. data/examples/aoc2018/inputs/day10_input.txt +395 -0
  27. data/examples/aoc2018/inputs/day11_input.txt +1 -0
  28. data/examples/aoc2018/inputs/day12_input.txt +34 -0
  29. data/examples/aoc2018/inputs/day12_input2.txt +16 -0
  30. data/examples/aoc2018/inputs/day13_input.txt +150 -0
  31. data/examples/aoc2018/inputs/day13_test.txt +6 -0
  32. data/examples/aoc2018/inputs/day14_input.txt +1 -0
  33. data/examples/aoc2018/inputs/day15_input.txt +32 -0
  34. data/examples/aoc2018/inputs/day15_input10.txt +32 -0
  35. data/examples/aoc2018/inputs/day15_input11.txt +32 -0
  36. data/examples/aoc2018/inputs/day15_input12.txt +32 -0
  37. data/examples/aoc2018/inputs/day15_input13.txt +32 -0
  38. data/examples/aoc2018/inputs/day15_input14.txt +32 -0
  39. data/examples/aoc2018/inputs/day15_input2.txt +7 -0
  40. data/examples/aoc2018/inputs/day15_input3.txt +9 -0
  41. data/examples/aoc2018/inputs/day15_input4.txt +7 -0
  42. data/examples/aoc2018/inputs/day15_input5.txt +7 -0
  43. data/examples/aoc2018/inputs/day15_input6.txt +7 -0
  44. data/examples/aoc2018/inputs/day15_input7.txt +7 -0
  45. data/examples/aoc2018/inputs/day15_input8.txt +5 -0
  46. data/examples/aoc2018/inputs/day15_input9.txt +7 -0
  47. data/examples/aoc2018/inputs/day15_test.txt +9 -0
  48. data/examples/aoc2018/inputs/day16_input.txt +3865 -0
  49. data/examples/aoc2018/inputs/day17_input.txt +2229 -0
  50. data/examples/aoc2018/inputs/day17_input_test.txt +8 -0
  51. data/examples/aoc2018/inputs/day18_input.txt +50 -0
  52. data/examples/aoc2018/inputs/day18_test.txt +10 -0
  53. data/examples/aoc2018/inputs/day19_input.txt +48 -0
  54. data/examples/aoc2018/inputs/day20_input.txt +1 -0
  55. data/examples/aoc2018/inputs/day21_input.txt +32 -0
  56. data/examples/aoc2018/inputs/day22_input.txt +2 -0
  57. data/examples/aoc2018/inputs/day23_input.txt +1000 -0
  58. data/examples/aoc2018/inputs/day23_input2.txt +9 -0
  59. data/examples/aoc2018/inputs/day24_input.txt +24 -0
  60. data/examples/aoc2018/inputs/day25_input.txt +1483 -0
  61. data/examples/aoc2018/inputs/day9_input.txt +1 -0
  62. data/lib/cem.rb +0 -6
  63. data/lib/cem/ccommon.rb +45 -0
  64. data/lib/cem/cruzzles.rb +93 -38
  65. data/lib/cem/version.rb +1 -1
  66. metadata +62 -2
@@ -0,0 +1,156 @@
1
+ #
2
+ # https://adventofcode.com/2018/day/24 part 1 and 2
3
+ #
4
+ # Does not use any cem functions
5
+ #
6
+
7
+ Group = Struct.new("Group", :immuneSystem, :units, :hitPoints, :weakness, :immunities, :damage, :damageType, :initiative) {
8
+
9
+ def damageCalc(other)
10
+ damage * units * (other.immunities.include?(damageType) ? 0 : 1) * (other.weakness.include?(damageType) ? 2 : 1)
11
+ end
12
+
13
+ def effectivePow
14
+ damage * units
15
+ end
16
+ }
17
+
18
+ lines = File.readlines("inputs/day24_input.txt")
19
+
20
+ groups = []
21
+ immuneSystem = false
22
+
23
+ lines.each { |line|
24
+ line.strip!
25
+
26
+ if line =~ /^Immune System:$/
27
+ immuneSystem = true
28
+ elsif line =~ /^Infection:$/
29
+ immuneSystem = false
30
+ elsif line =~ /^([+-]?\d+) units each with ([+-]?\d+) hit points\s*(.*?) with an attack that does ([+-]?\d+) (\w+) damage at initiative ([+-]?\d+)$/
31
+ units = $1.to_i
32
+ hitPoints = $2.to_i
33
+ immunities = []
34
+ weakness = []
35
+ w = $3
36
+ damage = $4.to_i
37
+ damageType = $5
38
+ initiative = $6.to_i
39
+
40
+ w.gsub(/\(|\)/, "").split("; ").each { |s|
41
+ if s =~ /immune to (.*)/
42
+ immunities = $1.split(", ")
43
+ end
44
+ if s =~ /weak to (.*)/
45
+ weakness = $1.split(", ")
46
+ end
47
+ }
48
+
49
+ g = Group.new(immuneSystem, units, hitPoints, weakness, immunities, damage, damageType, initiative)
50
+ groups << g
51
+ # puts g.inspect
52
+ elsif line == ""
53
+
54
+ else
55
+ raise line.inspect
56
+ end
57
+ }
58
+
59
+ def run(groups)
60
+
61
+ max_init = groups.map { |g| g.initiative }.max + 1
62
+
63
+ @max_init = max_init
64
+
65
+ round = 0
66
+
67
+ while groups.count { |g| g.immuneSystem } != 0 && groups.count { |g| !g.immuneSystem } != 0
68
+
69
+ anyDamage = false
70
+
71
+ groups.sort_by! { |g| [-g.damage * g.units, -g.initiative] }
72
+
73
+ # Target Selection
74
+ attackedGroups = []
75
+ attackPairs = []
76
+ groups.each { |g|
77
+ others = groups.select { |other| g.immuneSystem != other.immuneSystem && !attackedGroups.include?(other) }
78
+
79
+ groupToAttack = others.sort_by { |other| [-g.damageCalc(other), -other.damage * other.units, -other.initiative] }.first
80
+
81
+ if groupToAttack && g.damageCalc(groupToAttack) != 0
82
+ attackedGroups << groupToAttack
83
+ attackPairs << [g, groupToAttack]
84
+ end
85
+ }
86
+
87
+ attackPairs.sort_by! { |x| -x[0].initiative }
88
+
89
+ # Attack phase
90
+ attackPairs.each { |x|
91
+ from, to = x
92
+ damage = from.damageCalc(to)
93
+
94
+ killedUnits = damage / to.hitPoints
95
+ if killedUnits > 0
96
+ anyDamage = true
97
+ end
98
+ to.units -= killedUnits
99
+
100
+ if to.units <= 0
101
+ to.units = 0
102
+ groups = groups - [to]
103
+ end
104
+ }
105
+
106
+ groups.sort_by! { |g| -(g.immuneSystem ? 1 : 0) * 100000000000 - (g.damage * g.units * max_init + g.initiative)}
107
+
108
+ # puts round
109
+ round += 1
110
+ # system("cls") if round % 1024 == 0
111
+ # groups.each { |g| puts g.inspect } if round % 1024 == 0
112
+
113
+ if !anyDamage
114
+ groups.each { |g| puts g.inspect }
115
+ return
116
+ end
117
+ end
118
+
119
+ groups
120
+ end
121
+
122
+ tempGroup = groups.map { |g| g.dup }
123
+
124
+ puts "Part 1: #{run(tempGroup).sum{|g| g.units }}"
125
+
126
+ def part2(groups)
127
+
128
+ minAdd = 1
129
+
130
+ loop do
131
+
132
+ tempGroup = groups.map { |g| g.dup }
133
+
134
+ tempGroup.each { |g|
135
+ if g.immuneSystem
136
+ g.damage += minAdd
137
+ end
138
+ }
139
+
140
+ res = run(tempGroup)
141
+
142
+ if res == nil
143
+ puts "Boost: #{minAdd} - Got stuck"
144
+ else
145
+ puts "Boost: #{minAdd} - #{res[0].immuneSystem}"
146
+
147
+ if res[0].immuneSystem
148
+ return res
149
+ end
150
+ end
151
+
152
+ minAdd += 1
153
+ end
154
+ end
155
+
156
+ puts "Part 2: #{part2(groups).sum { |g| g.units }}"
@@ -0,0 +1,52 @@
1
+
2
+ #
3
+ # https://adventofcode.com/2018/day/25 part 1 (there is only 1
4
+ #
5
+ # Uses Point4D, but not much to see here.
6
+ #
7
+ require 'cem'
8
+
9
+ lines = File.readlines("inputs/day25_input.txt")
10
+
11
+ input = []
12
+
13
+ lines.each { |line|
14
+
15
+ if line =~ /^\s*([+-]?\d+),([+-]?\d+),([+-]?\d+),([+-]?\d+)\s*$/
16
+ v1 = $1.to_i
17
+ v2 = $2.to_i
18
+ v3 = $3.to_i
19
+ v4 = $4.to_i
20
+ input << Point4D.new(v1,v2,v3,v4)
21
+ else
22
+ raise line.inspect
23
+ end
24
+ }
25
+
26
+ constellations = []
27
+
28
+ input.each { |p|
29
+ if c = constellations.find { |c| c.any? { |p2| p2.manhattan(p) <= 3 } }
30
+ c << p
31
+ else
32
+ constellations << [p]
33
+ end
34
+ }
35
+
36
+ loop do
37
+ count = constellations.count { |c| c.size > 0 }
38
+
39
+ constellations.each_with_index { |c,i|
40
+ constellations.each_with_index { |d,j|
41
+ next if j <= i
42
+ if c.any? { |p| d.any? { |p2| p2.manhattan(p) <= 3 } }
43
+ c.push(*d)
44
+ d.clear
45
+ end
46
+ }
47
+ }
48
+ break if count == constellations.count { |c| c.size > 0 }
49
+ end
50
+
51
+ puts "Part 1: #{constellations.count { |c| c.size > 0 }}"
52
+
@@ -0,0 +1,51 @@
1
+
2
+ #
3
+ # https://adventofcode.com/2018/day/9 part 1 and part 2
4
+ #
5
+ # Does not use any cem functions \o/, but did you know that
6
+ # - Array#shift is supposed to be fast, but is not fast enough for this problem?
7
+ #
8
+
9
+ players = 428
10
+ marbles = 70825
11
+
12
+ def day9(players, marbles)
13
+
14
+ scores = [0] * players
15
+
16
+ nexta = 3
17
+ storage = [0, 2, 1]
18
+ current = 1
19
+ front = 0
20
+
21
+ while nexta < marbles
22
+
23
+ if nexta % 23 == 0
24
+
25
+ current = (current + storage.size - 7) % storage.size
26
+ worth = nexta + storage.delete_at(current)
27
+ scores[nexta % players] += worth
28
+
29
+ else
30
+
31
+ # Avoid wrapping the index
32
+ while current + 2 > storage.size
33
+ front_value = storage[front]
34
+ front += 1
35
+ storage.push front_value
36
+ end
37
+
38
+ current += 2
39
+ storage.insert(current, nexta)
40
+
41
+ end
42
+
43
+ nexta += 1
44
+
45
+ end
46
+
47
+ return scores.max
48
+ end
49
+
50
+ puts "One Star : #{day9(players, marbles)}"
51
+ puts "Two Stars: #{day9(players, marbles * 100)}"
@@ -0,0 +1,125 @@
1
+
2
+ #
3
+ # https://adventofcode.com/2018/day/9 part 1 and part 2
4
+ #
5
+ # Does not use any cem functions \o/
6
+ #
7
+ # Unfinished attempt to develop a circular array
8
+ #
9
+
10
+ players = 428
11
+ marbles = 7082500
12
+
13
+ #players = 10
14
+ #marbles = 1618
15
+
16
+ scores = [0] * 428
17
+
18
+ nexta = 3
19
+ lasta = 0
20
+ storage = [1, 2, 1]
21
+ current = 1
22
+
23
+ #
24
+ #
25
+ # Caveats:
26
+ # - When writing to indices greater than @size, the CircularArray does not expand, but the index wraps.
27
+ #
28
+ class CircularArray
29
+
30
+ attr_accessor :data
31
+ attr_reader :size, :start
32
+
33
+ def initialize(initialSize)
34
+ @data = Array.new(initialSize)
35
+ @size = 0
36
+ end
37
+
38
+ def index(index)
39
+ return (@start + index) % @size
40
+ end
41
+
42
+ def [](i)
43
+ return @data[index(i)]
44
+ end
45
+
46
+ def []=(i, newValue)
47
+ @data[index(i)] = newValue
48
+ end
49
+
50
+ def each
51
+ (0..@size).each do |x|
52
+ yield self[x]
53
+ end
54
+ end
55
+
56
+ def each_with_index
57
+ (0..@size).each do |x|
58
+ yield self[x], x
59
+ end
60
+ end
61
+
62
+ def <<(newValue)
63
+ if @size == @data.size
64
+ @data.insert(index(@size) + 1, [nil] * @size)
65
+ end
66
+
67
+ @data[index(@size)] = newValue
68
+ @size += 1
69
+ end
70
+
71
+
72
+ end
73
+
74
+
75
+ while nexta < marbles
76
+
77
+ if nexta / 1000 != lasta
78
+ lasta = nexta / 1000
79
+ puts lasta * 1000
80
+ end
81
+
82
+ n = storage.size
83
+ if nexta % 23 == 0
84
+
85
+ current = (current + n - 7) % n
86
+ worth = nexta + storage.delete_at(current)
87
+ scores[nexta % players] += worth
88
+
89
+ if worth == marbles
90
+ break;
91
+ end
92
+
93
+ else
94
+
95
+ if nexta % 23 == 1 && current + 46 < n && nexta + 22 < marbles
96
+
97
+ current += 2
98
+
99
+ storage.insert(current, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
100
+ (0..21).each { |i|
101
+
102
+ # puts storage[current..current + 40].inspect
103
+
104
+ storage[current + i * 2] = nexta
105
+ nexta += 1
106
+ storage[current + i * 2 + 1] = storage[current + 20 + i]
107
+
108
+
109
+ }
110
+ current += 42
111
+ nexta -= 1
112
+
113
+ else
114
+ current = (current + 2) % n
115
+ storage.insert(current, nexta)
116
+ end
117
+
118
+ end
119
+
120
+ nexta += 1
121
+
122
+ end
123
+
124
+
125
+ puts scores.max
@@ -0,0 +1,395 @@
1
+ position=<-41214, -10223> velocity=< 4, 1>
2
+ position=< 41635, -10215> velocity=<-4, 1>
3
+ position=<-51569, 20845> velocity=< 5, -2>
4
+ position=<-30826, 20850> velocity=< 3, -2>
5
+ position=< 31249, -30930> velocity=<-3, 3>
6
+ position=<-30862, -20578> velocity=< 3, 2>
7
+ position=<-20528, -30930> velocity=< 2, 3>
8
+ position=< 52013, -51642> velocity=<-5, 5>
9
+ position=<-20491, 41552> velocity=< 2, -4>
10
+ position=<-41218, 31200> velocity=< 4, -3>
11
+ position=< 31271, -10216> velocity=<-3, 1>
12
+ position=< 52010, 51915> velocity=<-5, -5>
13
+ position=< 41634, -30933> velocity=<-4, 3>
14
+ position=<-30826, 41551> velocity=< 3, -4>
15
+ position=<-20499, 31199> velocity=< 2, -3>
16
+ position=< 20953, 41559> velocity=<-2, -4>
17
+ position=<-51576, -41285> velocity=< 5, 4>
18
+ position=<-20523, 51906> velocity=< 2, -5>
19
+ position=< 10593, 51914> velocity=<-1, -5>
20
+ position=<-51593, 31204> velocity=< 5, -3>
21
+ position=< 20893, -30930> velocity=<-2, 3>
22
+ position=< 20929, 20843> velocity=<-2, -2>
23
+ position=< 51985, 20845> velocity=<-5, -2>
24
+ position=<-51534, -10215> velocity=< 5, 1>
25
+ position=<-41222, 51908> velocity=< 4, -5>
26
+ position=<-30859, 51914> velocity=< 3, -5>
27
+ position=<-30874, 51906> velocity=< 3, -5>
28
+ position=<-10129, -10220> velocity=< 1, 1>
29
+ position=<-41198, 31203> velocity=< 4, -3>
30
+ position=<-41238, 20847> velocity=< 4, -2>
31
+ position=<-10141, 20850> velocity=< 1, -2>
32
+ position=< 41661, 51915> velocity=<-4, -5>
33
+ position=<-41230, 31202> velocity=< 4, -3>
34
+ position=< 10561, -20578> velocity=<-1, 2>
35
+ position=<-30835, 20848> velocity=< 3, -2>
36
+ position=<-20467, -30926> velocity=< 2, 3>
37
+ position=<-51561, 31202> velocity=< 5, -3>
38
+ position=< 20900, -41280> velocity=<-2, 4>
39
+ position=< 10588, 31198> velocity=<-1, -3>
40
+ position=<-30854, 41551> velocity=< 3, -4>
41
+ position=< 31263, 10488> velocity=<-3, -1>
42
+ position=<-10117, 10490> velocity=< 1, -1>
43
+ position=<-51569, 20843> velocity=< 5, -2>
44
+ position=< 20928, -51640> velocity=<-2, 5>
45
+ position=< 10537, -10221> velocity=<-1, 1>
46
+ position=<-41201, -41286> velocity=< 4, 4>
47
+ position=<-10141, -20572> velocity=< 1, 2>
48
+ position=< 20908, -30929> velocity=<-2, 3>
49
+ position=<-20512, 51911> velocity=< 2, -5>
50
+ position=<-30835, -10224> velocity=< 3, 1>
51
+ position=< 41610, -10219> velocity=<-4, 1>
52
+ position=< 10537, 20849> velocity=<-1, -2>
53
+ position=< 41644, -20579> velocity=<-4, 2>
54
+ position=< 51990, -41289> velocity=<-5, 4>
55
+ position=< 10569, -20571> velocity=<-1, 2>
56
+ position=< 20905, 41559> velocity=<-2, -4>
57
+ position=< 20940, 20843> velocity=<-2, -2>
58
+ position=<-20512, 20843> velocity=< 2, -2>
59
+ position=<-41202, 51915> velocity=< 4, -5>
60
+ position=<-10173, 51911> velocity=< 1, -5>
61
+ position=<-41230, -10220> velocity=< 4, 1>
62
+ position=< 31279, 31205> velocity=<-3, -3>
63
+ position=<-41226, 10492> velocity=< 4, -1>
64
+ position=<-51577, -41280> velocity=< 5, 4>
65
+ position=<-10125, 20846> velocity=< 1, -2>
66
+ position=< 41658, 20845> velocity=<-4, -2>
67
+ position=< 31274, 41555> velocity=<-3, -4>
68
+ position=<-10117, 51913> velocity=< 1, -5>
69
+ position=< 31287, 51910> velocity=<-3, -5>
70
+ position=< 10545, -20576> velocity=<-1, 2>
71
+ position=<-20520, 51913> velocity=< 2, -5>
72
+ position=<-20528, -10216> velocity=< 2, 1>
73
+ position=<-41180, -20579> velocity=< 4, 2>
74
+ position=< 10561, -41283> velocity=<-1, 4>
75
+ position=< 31252, 51909> velocity=<-3, -5>
76
+ position=<-30822, -30927> velocity=< 3, 3>
77
+ position=< 20929, -41281> velocity=<-2, 4>
78
+ position=<-51553, 10489> velocity=< 5, -1>
79
+ position=<-30883, -41287> velocity=< 3, 4>
80
+ position=<-30846, 10487> velocity=< 3, -1>
81
+ position=< 10594, 10495> velocity=<-1, -1>
82
+ position=< 10547, 31200> velocity=<-1, -3>
83
+ position=< 41658, -10216> velocity=<-4, 1>
84
+ position=<-51585, 41553> velocity=< 5, -4>
85
+ position=<-41198, -20579> velocity=< 4, 2>
86
+ position=<-10168, -10223> velocity=< 1, 1>
87
+ position=<-30851, -20575> velocity=< 3, 2>
88
+ position=< 10574, -41283> velocity=<-1, 4>
89
+ position=< 31260, 20849> velocity=<-3, -2>
90
+ position=< 41607, -51636> velocity=<-4, 5>
91
+ position=< 20944, 10494> velocity=<-2, -1>
92
+ position=< 31255, -10223> velocity=<-3, 1>
93
+ position=<-20510, 51906> velocity=< 2, -5>
94
+ position=<-30851, -41286> velocity=< 3, 4>
95
+ position=<-41198, -51636> velocity=< 4, 5>
96
+ position=<-41190, 41553> velocity=< 4, -4>
97
+ position=<-10170, -30930> velocity=< 1, 3>
98
+ position=<-41233, 20848> velocity=< 4, -2>
99
+ position=< 31255, 31197> velocity=<-3, -3>
100
+ position=<-30843, 10488> velocity=< 3, -1>
101
+ position=< 20948, 10492> velocity=<-2, -1>
102
+ position=<-41206, -51639> velocity=< 4, 5>
103
+ position=<-10161, -30928> velocity=< 1, 3>
104
+ position=< 31308, 20848> velocity=<-3, -2>
105
+ position=<-10149, -30934> velocity=< 1, 3>
106
+ position=<-10165, 20841> velocity=< 1, -2>
107
+ position=< 20948, -51642> velocity=<-2, 5>
108
+ position=<-41222, -51637> velocity=< 4, 5>
109
+ position=<-30823, 51914> velocity=< 3, -5>
110
+ position=< 41642, -20574> velocity=<-4, 2>
111
+ position=<-20523, -41280> velocity=< 2, 4>
112
+ position=< 10589, 41559> velocity=<-1, -4>
113
+ position=< 10577, -41283> velocity=<-1, 4>
114
+ position=< 20900, -30934> velocity=<-2, 3>
115
+ position=<-30851, -51635> velocity=< 3, 5>
116
+ position=< 31249, 10490> velocity=<-3, -1>
117
+ position=< 51992, -41280> velocity=<-5, 4>
118
+ position=<-30833, -20576> velocity=< 3, 2>
119
+ position=<-20509, -41285> velocity=< 2, 4>
120
+ position=< 41607, 51907> velocity=<-4, -5>
121
+ position=<-20485, -51639> velocity=< 2, 5>
122
+ position=<-20523, 31196> velocity=< 2, -3>
123
+ position=< 10585, 41558> velocity=<-1, -4>
124
+ position=< 41653, -30927> velocity=<-4, 3>
125
+ position=< 20900, -41285> velocity=<-2, 4>
126
+ position=< 31276, -20573> velocity=<-3, 2>
127
+ position=<-10117, 41555> velocity=< 1, -4>
128
+ position=<-10133, 51910> velocity=< 1, -5>
129
+ position=< 31249, 10490> velocity=<-3, -1>
130
+ position=< 31295, 10492> velocity=<-3, -1>
131
+ position=<-30843, -20570> velocity=< 3, 2>
132
+ position=<-30827, -20572> velocity=< 3, 2>
133
+ position=< 10586, -51639> velocity=<-1, 5>
134
+ position=< 10589, -10223> velocity=<-1, 1>
135
+ position=< 20943, 20848> velocity=<-2, -2>
136
+ position=<-10157, -10218> velocity=< 1, 1>
137
+ position=< 10598, -41284> velocity=<-1, 4>
138
+ position=< 41660, -30934> velocity=<-4, 3>
139
+ position=< 31263, 20849> velocity=<-3, -2>
140
+ position=< 31276, 20846> velocity=<-3, -2>
141
+ position=<-41238, 20846> velocity=< 4, -2>
142
+ position=<-10132, -41285> velocity=< 1, 4>
143
+ position=< 20924, 51906> velocity=<-2, -5>
144
+ position=<-20504, 51908> velocity=< 2, -5>
145
+ position=< 52007, -20576> velocity=<-5, 2>
146
+ position=< 51957, 41555> velocity=<-5, -4>
147
+ position=< 31291, -10224> velocity=<-3, 1>
148
+ position=<-10161, -10217> velocity=< 1, 1>
149
+ position=<-30847, -20575> velocity=< 3, 2>
150
+ position=< 41615, -41287> velocity=<-4, 4>
151
+ position=< 41626, 20850> velocity=<-4, -2>
152
+ position=< 31307, -10224> velocity=<-3, 1>
153
+ position=<-20470, 51915> velocity=< 2, -5>
154
+ position=<-51593, 31198> velocity=< 5, -3>
155
+ position=<-30873, 31196> velocity=< 3, -3>
156
+ position=<-20504, -10220> velocity=< 2, 1>
157
+ position=<-10157, -20571> velocity=< 1, 2>
158
+ position=<-10156, 41555> velocity=< 1, -4>
159
+ position=< 51970, -30933> velocity=<-5, 3>
160
+ position=< 41626, 41557> velocity=<-4, -4>
161
+ position=< 52009, -20578> velocity=<-5, 2>
162
+ position=< 51994, -20577> velocity=<-5, 2>
163
+ position=< 41626, 10491> velocity=<-4, -1>
164
+ position=<-41193, 10494> velocity=< 4, -1>
165
+ position=<-51545, -51635> velocity=< 5, 5>
166
+ position=< 31279, -20571> velocity=<-3, 2>
167
+ position=< 41611, 31200> velocity=<-4, -3>
168
+ position=<-41182, 41552> velocity=< 4, -4>
169
+ position=< 52008, 10493> velocity=<-5, -1>
170
+ position=< 31273, 51910> velocity=<-3, -5>
171
+ position=<-20512, -10215> velocity=< 2, 1>
172
+ position=<-30843, -51643> velocity=< 3, 5>
173
+ position=<-30849, 10486> velocity=< 3, -1>
174
+ position=<-20502, 10490> velocity=< 2, -1>
175
+ position=<-20496, -51640> velocity=< 2, 5>
176
+ position=< 41615, 10489> velocity=<-4, -1>
177
+ position=<-20485, -41284> velocity=< 2, 4>
178
+ position=<-20520, 20849> velocity=< 2, -2>
179
+ position=< 51986, -30929> velocity=<-5, 3>
180
+ position=<-51564, 31198> velocity=< 5, -3>
181
+ position=<-30841, 10490> velocity=< 3, -1>
182
+ position=<-51573, 20841> velocity=< 5, -2>
183
+ position=< 10589, -41281> velocity=<-1, 4>
184
+ position=< 20900, 31199> velocity=<-2, -3>
185
+ position=<-41225, 20850> velocity=< 4, -2>
186
+ position=< 20905, -30932> velocity=<-2, 3>
187
+ position=< 41663, -30933> velocity=<-4, 3>
188
+ position=<-30833, -51641> velocity=< 3, 5>
189
+ position=<-41190, -30934> velocity=< 4, 3>
190
+ position=< 31291, -51637> velocity=<-3, 5>
191
+ position=<-10132, -10220> velocity=< 1, 1>
192
+ position=< 41638, -10220> velocity=<-4, 1>
193
+ position=<-10165, 10486> velocity=< 1, -1>
194
+ position=<-20504, 41552> velocity=< 2, -4>
195
+ position=< 20929, 41559> velocity=<-2, -4>
196
+ position=<-10124, 31200> velocity=< 1, -3>
197
+ position=< 31279, 41556> velocity=<-3, -4>
198
+ position=< 20908, -51637> velocity=<-2, 5>
199
+ position=<-30867, 31199> velocity=< 3, -3>
200
+ position=< 41628, -51640> velocity=<-4, 5>
201
+ position=< 52001, 41555> velocity=<-5, -4>
202
+ position=<-10139, -10215> velocity=< 1, 1>
203
+ position=< 51957, -10224> velocity=<-5, 1>
204
+ position=< 52018, 51912> velocity=<-5, -5>
205
+ position=< 20892, -20572> velocity=<-2, 2>
206
+ position=<-20520, 31204> velocity=< 2, -3>
207
+ position=<-51585, 10488> velocity=< 5, -1>
208
+ position=< 31251, 51910> velocity=<-3, -5>
209
+ position=<-41204, 10490> velocity=< 4, -1>
210
+ position=<-51566, 20845> velocity=< 5, -2>
211
+ position=< 41623, 41553> velocity=<-4, -4>
212
+ position=<-41233, -51641> velocity=< 4, 5>
213
+ position=<-41194, 31203> velocity=< 4, -3>
214
+ position=<-10112, -20570> velocity=< 1, 2>
215
+ position=< 10574, 10488> velocity=<-1, -1>
216
+ position=< 41646, -20573> velocity=<-4, 2>
217
+ position=<-51560, 31200> velocity=< 5, -3>
218
+ position=<-41214, -41281> velocity=< 4, 4>
219
+ position=< 31308, -51635> velocity=<-3, 5>
220
+ position=<-10130, 10486> velocity=< 1, -1>
221
+ position=<-51588, -41285> velocity=< 5, 4>
222
+ position=< 41643, 10486> velocity=<-4, -1>
223
+ position=<-51588, 31197> velocity=< 5, -3>
224
+ position=< 31284, -10218> velocity=<-3, 1>
225
+ position=< 31295, 31199> velocity=<-3, -3>
226
+ position=<-20509, 41555> velocity=< 2, -4>
227
+ position=<-51588, 41558> velocity=< 5, -4>
228
+ position=<-20486, 31196> velocity=< 2, -3>
229
+ position=< 10569, -41288> velocity=<-1, 4>
230
+ position=< 10593, 51907> velocity=<-1, -5>
231
+ position=< 20925, 31200> velocity=<-2, -3>
232
+ position=<-20480, -30929> velocity=< 2, 3>
233
+ position=<-30870, 20842> velocity=< 3, -2>
234
+ position=<-30843, 31202> velocity=< 3, -3>
235
+ position=< 41631, -41288> velocity=<-4, 4>
236
+ position=<-30854, 41559> velocity=< 3, -4>
237
+ position=<-30867, -20575> velocity=< 3, 2>
238
+ position=<-30859, 20844> velocity=< 3, -2>
239
+ position=< 41661, -51639> velocity=<-4, 5>
240
+ position=< 31259, -20575> velocity=<-3, 2>
241
+ position=< 31276, 51906> velocity=<-3, -5>
242
+ position=< 41615, 10494> velocity=<-4, -1>
243
+ position=<-41226, -51644> velocity=< 4, 5>
244
+ position=< 20932, 31204> velocity=<-2, -3>
245
+ position=< 31271, 51910> velocity=<-3, -5>
246
+ position=< 10561, 51906> velocity=<-1, -5>
247
+ position=< 41650, -10216> velocity=<-4, 1>
248
+ position=<-51582, -20574> velocity=< 5, 2>
249
+ position=< 41647, 20843> velocity=<-4, -2>
250
+ position=<-41227, 31200> velocity=< 4, -3>
251
+ position=< 20926, -41289> velocity=<-2, 4>
252
+ position=< 51986, 51915> velocity=<-5, -5>
253
+ position=< 41642, -51644> velocity=<-4, 5>
254
+ position=< 20908, -30933> velocity=<-2, 3>
255
+ position=< 10569, 51906> velocity=<-1, -5>
256
+ position=<-10162, 41555> velocity=< 1, -4>
257
+ position=< 31276, 51912> velocity=<-3, -5>
258
+ position=< 41636, 20850> velocity=<-4, -2>
259
+ position=< 51973, -51641> velocity=<-5, 5>
260
+ position=<-51588, -10219> velocity=< 5, 1>
261
+ position=< 20948, -41283> velocity=<-2, 4>
262
+ position=<-30822, -30933> velocity=< 3, 3>
263
+ position=<-30823, 51911> velocity=< 3, -5>
264
+ position=<-30875, 51908> velocity=< 3, -5>
265
+ position=< 31287, -10222> velocity=<-3, 1>
266
+ position=< 31247, -10222> velocity=<-3, 1>
267
+ position=<-10116, -41289> velocity=< 1, 4>
268
+ position=< 41643, 10490> velocity=<-4, -1>
269
+ position=< 20925, 31200> velocity=<-2, -3>
270
+ position=<-30854, 20848> velocity=< 3, -2>
271
+ position=<-30872, 20841> velocity=< 3, -2>
272
+ position=< 41610, 41552> velocity=<-4, -4>
273
+ position=<-41228, 20845> velocity=< 4, -2>
274
+ position=< 31283, 10486> velocity=<-3, -1>
275
+ position=<-20512, 41558> velocity=< 2, -4>
276
+ position=< 41623, 41554> velocity=<-4, -4>
277
+ position=< 51973, -30933> velocity=<-5, 3>
278
+ position=< 31296, 20845> velocity=<-3, -2>
279
+ position=< 41642, -10215> velocity=<-4, 1>
280
+ position=<-20517, -41285> velocity=< 2, 4>
281
+ position=<-51548, 31197> velocity=< 5, -3>
282
+ position=< 20897, -51642> velocity=<-2, 5>
283
+ position=< 41642, 51915> velocity=<-4, -5>
284
+ position=< 20935, 41555> velocity=<-2, -4>
285
+ position=< 20932, 41555> velocity=<-2, -4>
286
+ position=< 41634, -20577> velocity=<-4, 2>
287
+ position=<-51574, 10486> velocity=< 5, -1>
288
+ position=< 52002, 10494> velocity=<-5, -1>
289
+ position=< 51997, 41559> velocity=<-5, -4>
290
+ position=< 41610, -10221> velocity=<-4, 1>
291
+ position=< 20909, -41289> velocity=<-2, 4>
292
+ position=< 31268, 10489> velocity=<-3, -1>
293
+ position=<-51577, 10492> velocity=< 5, -1>
294
+ position=<-51574, -20579> velocity=< 5, 2>
295
+ position=< 31263, -51640> velocity=<-3, 5>
296
+ position=<-51564, 10494> velocity=< 5, -1>
297
+ position=< 41607, 20846> velocity=<-4, -2>
298
+ position=<-10114, -51644> velocity=< 1, 5>
299
+ position=< 31295, 20842> velocity=<-3, -2>
300
+ position=< 31247, 51907> velocity=<-3, -5>
301
+ position=<-10164, 41555> velocity=< 1, -4>
302
+ position=<-30827, -51639> velocity=< 3, 5>
303
+ position=<-41233, 10488> velocity=< 4, -1>
304
+ position=< 52001, 41558> velocity=<-5, -4>
305
+ position=< 51981, 41551> velocity=<-5, -4>
306
+ position=<-20469, 10486> velocity=< 2, -1>
307
+ position=< 41607, 10490> velocity=<-4, -1>
308
+ position=< 20953, -20574> velocity=<-2, 2>
309
+ position=< 41631, 41556> velocity=<-4, -4>
310
+ position=< 20929, -41286> velocity=<-2, 4>
311
+ position=<-51574, -41289> velocity=< 5, 4>
312
+ position=<-30851, 20848> velocity=< 3, -2>
313
+ position=< 51997, -41287> velocity=<-5, 4>
314
+ position=<-41206, 31200> velocity=< 4, -3>
315
+ position=<-10141, -51641> velocity=< 1, 5>
316
+ position=< 31271, 10488> velocity=<-3, -1>
317
+ position=<-20491, -30929> velocity=< 2, 3>
318
+ position=< 10574, 51912> velocity=<-1, -5>
319
+ position=< 51986, -30930> velocity=<-5, 3>
320
+ position=<-51585, 20847> velocity=< 5, -2>
321
+ position=< 31303, -10216> velocity=<-3, 1>
322
+ position=< 10574, -20572> velocity=<-1, 2>
323
+ position=< 41622, 31196> velocity=<-4, -3>
324
+ position=< 52005, -51635> velocity=<-5, 5>
325
+ position=< 52007, 20847> velocity=<-5, -2>
326
+ position=< 31300, 10486> velocity=<-3, -1>
327
+ position=<-41203, 51906> velocity=< 4, -5>
328
+ position=< 31303, -30929> velocity=<-3, 3>
329
+ position=<-30882, 10490> velocity=< 3, -1>
330
+ position=<-10128, 41559> velocity=< 1, -4>
331
+ position=< 31271, -10215> velocity=<-3, 1>
332
+ position=<-20468, 20846> velocity=< 2, -2>
333
+ position=<-20500, -20575> velocity=< 2, 2>
334
+ position=< 31308, -20578> velocity=<-3, 2>
335
+ position=<-10125, -20575> velocity=< 1, 2>
336
+ position=< 10594, 31196> velocity=<-1, -3>
337
+ position=< 41629, 31200> velocity=<-4, -3>
338
+ position=<-10161, -10217> velocity=< 1, 1>
339
+ position=< 31295, 41559> velocity=<-3, -4>
340
+ position=<-51537, -30931> velocity=< 5, 3>
341
+ position=<-51585, 10491> velocity=< 5, -1>
342
+ position=<-41182, 31198> velocity=< 4, -3>
343
+ position=<-41238, 20850> velocity=< 4, -2>
344
+ position=<-51556, 10491> velocity=< 5, -1>
345
+ position=< 51970, 31199> velocity=<-5, -3>
346
+ position=< 41607, 31204> velocity=<-4, -3>
347
+ position=< 10569, 31198> velocity=<-1, -3>
348
+ position=<-20491, 31197> velocity=< 2, -3>
349
+ position=<-30848, 31200> velocity=< 3, -3>
350
+ position=<-20494, -10224> velocity=< 2, 1>
351
+ position=<-10131, 20841> velocity=< 1, -2>
352
+ position=<-10130, -51640> velocity=< 1, 5>
353
+ position=<-10141, 31202> velocity=< 1, -3>
354
+ position=<-41188, -51638> velocity=< 4, 5>
355
+ position=< 20904, -30928> velocity=<-2, 3>
356
+ position=< 20929, -51641> velocity=<-2, 5>
357
+ position=<-10114, -20570> velocity=< 1, 2>
358
+ position=<-30883, -10219> velocity=< 3, 1>
359
+ position=< 41607, 10495> velocity=<-4, -1>
360
+ position=<-30851, 51912> velocity=< 3, -5>
361
+ position=< 20937, 20850> velocity=<-2, -2>
362
+ position=<-51575, -30930> velocity=< 5, 3>
363
+ position=< 10566, -30925> velocity=<-1, 3>
364
+ position=< 51986, -20572> velocity=<-5, 2>
365
+ position=<-51569, -51637> velocity=< 5, 5>
366
+ position=<-10130, -20574> velocity=< 1, 2>
367
+ position=<-10157, -41281> velocity=< 1, 4>
368
+ position=<-41217, 31197> velocity=< 4, -3>
369
+ position=<-30835, 41556> velocity=< 3, -4>
370
+ position=<-10128, -20576> velocity=< 1, 2>
371
+ position=< 20940, 10487> velocity=<-2, -1>
372
+ position=< 52013, 41556> velocity=<-5, -4>
373
+ position=<-51588, -20570> velocity=< 5, 2>
374
+ position=<-10157, -51641> velocity=< 1, 5>
375
+ position=<-10112, 20847> velocity=< 1, -2>
376
+ position=<-51573, -10220> velocity=< 5, 1>
377
+ position=< 20917, 51910> velocity=<-2, -5>
378
+ position=< 51997, -30933> velocity=<-5, 3>
379
+ position=< 41618, 20845> velocity=<-4, -2>
380
+ position=<-41205, -10224> velocity=< 4, 1>
381
+ position=<-30875, 41555> velocity=< 3, -4>
382
+ position=<-51559, 20845> velocity=< 5, -2>
383
+ position=< 31256, 51906> velocity=<-3, -5>
384
+ position=< 10590, 41560> velocity=<-1, -4>
385
+ position=< 41610, -41284> velocity=<-4, 4>
386
+ position=<-30842, 31196> velocity=< 3, -3>
387
+ position=< 10542, -10218> velocity=<-1, 1>
388
+ position=<-41227, -41289> velocity=< 4, 4>
389
+ position=< 10566, 10492> velocity=<-1, -1>
390
+ position=< 10546, -20579> velocity=<-1, 2>
391
+ position=< 10537, -30927> velocity=<-1, 3>
392
+ position=<-51564, 51910> velocity=< 5, -5>
393
+ position=<-41222, -41289> velocity=< 4, 4>
394
+ position=< 10593, -10217> velocity=<-1, 1>
395
+ position=<-20528, -20575> velocity=< 2, 2>