///|
fn main raise {
let p = @cutstock.problem(
[
@cutstock.demand("rail", "steel", 38, 3),
@cutstock.demand("brace", "steel", 22, 2),
],
[
@cutstock.stock("short", "steel", 100, 8, 1, trim_start=2, trim_end=2),
@cutstock.stock("long", "steel", 160, 14, -1, trim_start=3, trim_end=3),
],
kerf=2,
min_remnant=10,
).unwrap()
let s = @cutstock.solve(p).unwrap()
assert_eq(s.status(), @cutstock.Optimal)
println(@cutstock.text_report(p, s).unwrap())
let plan = s.plan().unwrap()
let maps = @cutstock.cutting_map(p, plan).unwrap()
assert_true(@cutstock.verify_cutting_map(p, plan, maps))
println(@cutstock.encode_plan(p, plan).unwrap())
}