///|
fn main {
run() catch {
_ => panic()
}
}
///|
fn run() -> Unit raise {
let code = @moonldpc.lift_qc([[0, 1, -1], [-1, 0, 2]], 5)
let interchange = code.to_alist()
let imported = @moonldpc.parse_alist(interchange)
assert_eq(imported.to_alist(), interchange)
let encoder = @moonldpc.Encoder::new(imported)
let word = encoder.encode(Array::make(encoder.dimension(), 1))
assert_true(imported.is_codeword(word))
println("designer: QC -> alist -> sparse matrix -> encode -> syndrome")
println(imported.analyze().to_json().stringify())
println("dimension=\{encoder.dimension()}")
assert_eq(imported.girth(), None)
// True code projection differs from a transmission observation map.
let projected = imported.puncture([0, 1])
let reduced = word[2:].to_owned()
assert_true(projected.is_codeword(reduced))
println(projected.analyze().to_json().stringify())
println(
@moonldpc.Encoder::new(@moonldpc.hamming7())
.distance_report()
.to_json()
.stringify(),
)
}