simplification rustique
This commit is contained in:
@ -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() {
|
||||
|
||||
@ -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();
|
||||
|
||||
Reference in New Issue
Block a user