-
Notifications
You must be signed in to change notification settings - Fork 0
/
day6_part2.jakt
49 lines (39 loc) · 1.2 KB
/
day6_part2.jakt
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
/// Expect:
/// - output: "46563\n"
import reader
import utility
function distance_to_coordinates(coordinates: [(u32, u32, usize)], x: u32, y: u32) -> i64 {
mut total_distance = 0
for coordinate in coordinates.iterator() {
total_distance += utility::abs(coordinate.0 as! i64 - x as !i64)
total_distance += utility::abs(coordinate.1 as! i64 - y as !i64)
}
return total_distance
}
function main() {
mut coordinates: [(u32, u32, usize)] = []
mut x_bound = 0u32
mut y_bound = 0u32
for (id, coord_str) in utility::enumerate(reader::lines_string(day: 6).iterator()) {
let coord_parts = coord_str.split(',')
let x = coord_parts[0].to_uint()!
let y = coord_parts[1].substring(start: 1, length: coord_parts[1].length() - 1).to_uint()!
coordinates.push((x, y, id))
if x > x_bound {
x_bound = x
}
if y > y_bound {
y_bound = y
}
}
mut points = 0
for y in 0..y_bound {
for x in 0..x_bound {
let distance = distance_to_coordinates(coordinates, x, y)
if distance < 10000 {
points++
}
}
}
println("{}", points)
}