use alice_lol::stdlib::pattern::{
field_tested_patterns, patterns_by_route, registry, CertificationSource, PatternRoute,
};
fn main() {
println!("=== ALICE-LOL Phase B.1.a — pattern registry catalog ===\n");
println!("Registered patterns: {}", registry::ALL.len());
println!();
for (i, p) in registry::ALL.iter().enumerate() {
println!(
" [{i:>2}] {:<32} route={:<28} cert={}",
p.name,
p.route.as_str(),
p.certified_by.as_str()
);
}
let ft = field_tested_patterns();
println!("\n--- Field-tested baseline ({} patterns) ---", ft.len());
for p in &ft {
let kind = p.canonical_kind.unwrap_or("(none)");
println!(" {:<32} → {kind}", p.name);
}
let thin = patterns_by_route(PatternRoute::SdfDualContouring);
let thick = patterns_by_route(PatternRoute::SdfMarchingCubes);
println!(
"\n--- Route breakdown ---\n SdfDualContouring (薄物): {} patterns\n SdfMarchingCubes (厚物): {} patterns",
thin.len(),
thick.len()
);
let uncertified = registry::ALL
.iter()
.filter(|p| p.certified_by == CertificationSource::None)
.count();
println!(
"\n--- Certification breakdown ---\n UserFieldTest: {}\n SimulationOnly: {}\n Both: {}\n None: {}",
registry::ALL
.iter()
.filter(|p| p.certified_by == CertificationSource::UserFieldTest)
.count(),
registry::ALL
.iter()
.filter(|p| p.certified_by == CertificationSource::SimulationOnly)
.count(),
registry::ALL
.iter()
.filter(|p| p.certified_by == CertificationSource::Both)
.count(),
uncertified,
);
println!("\n=== Done ===");
println!(
"field_test 実データ (date/material/printer/notes) は Phase B.2 で user 実測記録を登録"
);
println!("printability_score は Phase D.1 で rating 経由で埋める");
}