simplification rustique

This commit is contained in:
2026-02-11 20:38:57 +01:00
parent 69a65a884d
commit 08a57f903f
86 changed files with 42 additions and 36 deletions

View File

@ -38,16 +38,24 @@ impl DenseEncoder {
pub fn encode(&self, message: &[u8]) -> Vec<u8> {
assert_eq!(message.len(), self.k, "Taille du message non valide");
let mut codeword = vec![0; self.n];
// let mut codeword = vec![0; self.n];
// s = u * G
for c in 0..self.n {
let mut sum = 0;
for r in 0..self.k {
sum ^= message[r] & self.g_matrix.get(r, c);
}
codeword[c] = sum;
}
// for c in 0..self.n {
// let mut sum = 0;
// for r in 0..self.k {
// sum ^= message[r] & self.g_matrix.get(r, c);
// }
// codeword[c] = sum;
// }
let mut codeword: Vec<u8> = (0..self.n)
.map(|c| {
message.iter().enumerate().fold(0, |acc, (r, &msg_bit)| {
acc ^ (msg_bit & self.g_matrix.get(r, c))
})
})
.collect();
// Reverse les changement de colonnes
for &(c1, c2) in self.col_swaps.iter().rev() {

View File

@ -42,23 +42,27 @@ fn main() {
println!("\nMessage u : {:?}", message);
println!("\n Codeword s : {:?}", codeword);
let mut is_valid = true;
for r in 0..m {
let mut sum = 0;
for c in 0..n {
sum ^= codeword[c] & h_matrix.get(r, c);
}
if sum != 0 {
is_valid = false;
break;
}
}
// let mut is_valid = true;
// for r in 0..m {
// let mut sum = 0;
// for c in 0..n {
// sum ^= codeword[c] & h_matrix.get(r, c);
// }
// if sum != 0 {
// is_valid = false;
// break;
// }
// }
if is_valid {
println!("\nVrai");
} else {
println!("\nFaux");
}
let is_valid = (0..m).all(|r| {
let sum = codeword
.iter()
.enumerate()
.fold(0, |acc, (c, &bit)| acc ^ (bit & h_matrix.get(r, c)));
sum == 0
});
println!("\n{}", if is_valid { "Vrai" } else { "Faux" });
// println!("\nGauss-Jordan sur H :");
// h_matrix.gauss_jordan();