.count();
print!("{} ", middle_vertices);
-
+
+ let mut edges_middlish = [0; 3];
+
+ for ab in shape_edges(&shape) {
+ let middles = ab.iter().filter(|p| point_middle(p)).count();
+ edges_middlish[middles] += 1;
+ }
+
+ for em in &edges_middlish {
+ print!(" {:2}", em);
+ }
+
print_shape(&shape)?;
}
})
}
+pub fn shape_edges(shape: &Shape) -> impl Iterator<Item=[Point; 2]> + '_ {
+ shape
+ .iter()
+ .cycle()
+ .take(shape.len() + 1)
+ .tuple_windows()
+ .map(|(&a,&b)| [a,b])
+}
+
pub fn print_shape(shape: &Shape) -> io::Result<()> {
let mut o = io::stdout().lock();
for vx in shape {
write!(o, "\n")?;
Ok(())
}
+
+pub fn point_middle(point: &Point) -> bool {
+ point.iter().all(|&c| c == 1 || c == 2)
+}