Implement MT19937 for challenge 21.

This commit is contained in:
2022-07-30 12:33:42 -04:00
parent 6485a2f068
commit 2586f67241
3 changed files with 100 additions and 2 deletions

View File

@@ -2,6 +2,7 @@ use crate::bytes::Bytes;
use crate::bytes_base64::BytesBase64;
use crate::cbc;
use crate::ctr;
use crate::mt19937;
use rand::Rng;
use std::cell::RefCell;
use std::collections::HashMap;
@@ -301,5 +302,20 @@ pub fn challenge20() {
}
pub fn challenge21() {
println!("[xxxx] Challenge 21: TBD");
// Implement the MT19937 Mersenne Twister RNG
let expected: Vec<u32> = vec![
0xD091BB5C, 0x22AE9EF6, 0xE7E1FAEE, 0xD5C31F79, 0x2082352C, 0xF807B7DF, 0xE9D30005,
0x3895AFE1, 0xA1E24BBA, 0x4EE4092B,
];
let mut mt = mt19937::MT19937::new();
mt.seed(5489);
for i in 0..expected.len() {
assert_eq!(mt.extract_number(), expected[i]);
}
println!("[okay] Challenge 21: Implemented MT19937");
}
pub fn challenge22() {
println!("[xxxx] Challenge 22: TBD!");
}