+23
day8/src/circuit.rs
+23
day8/src/circuit.rs
···
1
+
use crate::Point;
2
+
use std::fmt::Debug;
3
+
4
+
#[derive(Clone, Hash, PartialEq, Eq)]
5
+
pub struct Circuit {
6
+
nodes: Vec<Point>,
7
+
size: usize,
8
+
}
9
+
10
+
impl Circuit {
11
+
pub fn contains_point(&self, point: &Point) -> bool {
12
+
self.nodes.contains(point)
13
+
}
14
+
}
15
+
impl Debug for Circuit {
16
+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
17
+
writeln!(f, "Circuit {{ ");
18
+
for node in &self.nodes {
19
+
writeln!(f, "{:?}, ", node)?;
20
+
}
21
+
writeln!(f, "size: {} }} ", self.size)
22
+
}
23
+
}
+2
-23
day8/src/main.rs
+2
-23
day8/src/main.rs
···
1
1
use itertools::Itertools;
2
2
use memoize::memoize;
3
3
use std::fmt::Debug;
4
-
// use std::fs;
4
+
mod circuit;
5
+
use circuit::Circuit;
5
6
6
7
#[derive(Debug, Clone, Hash, PartialEq, Eq, Copy)]
7
8
struct Point {
8
9
x: u64,
9
10
y: u64,
10
11
z: u64,
11
-
}
12
-
13
-
#[derive(Clone, Hash, PartialEq, Eq)]
14
-
struct Circuit {
15
-
nodes: Vec<Point>,
16
-
size: usize,
17
-
}
18
-
19
-
impl Circuit {
20
-
fn contains_point(&self, point: &Point) -> bool {
21
-
self.nodes.contains(point)
22
-
}
23
12
}
24
13
25
14
impl Point {
···
51
40
+ (a.y as i64 - b.y as i64).pow(2)
52
41
+ (a.z as i64 - b.z as i64).pow(2))
53
42
.isqrt() as u32
54
-
}
55
-
56
-
impl Debug for Circuit {
57
-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
58
-
writeln!(f, "Circuit {{ ");
59
-
for node in &self.nodes {
60
-
writeln!(f, "{:?}, ", node)?;
61
-
}
62
-
writeln!(f, "size: {} }} ", self.size)
63
-
}
64
43
}
65
44
66
45
fn main() {