--- /dev/null
+
+use z3_treefoil::*;
+
+fn main() -> io::Result<()> {
+ for shape in read_vertices() {
+
+
+
+ let has_all_corners =
+ iter::repeat([0,MAX].into_iter())
+ .take(DIM)
+ .multi_cartesian_product()
+ .all(|need| shape.iter().any(|got| &got[..]==need));
+
+ if !has_all_corners { continue }
+
+ if !has_all_corners { continue }
+
+ let middle_vertices =
+ iter::repeat([1,2].into_iter())
+ .take(DIM)
+ .multi_cartesian_product()
+ .filter(|need| shape.iter().any(|got| &got[..]==need))
+ .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)?;
+ }
+
+ Ok(())
+}