Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
20
Task/Entropy/Rust/entropy.rust
Normal file
20
Task/Entropy/Rust/entropy.rust
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
fn entropy(s: &[u8]) -> f32 {
|
||||
let mut histogram = [0u64; 256];
|
||||
|
||||
for &b in s {
|
||||
histogram[b as usize] += 1;
|
||||
}
|
||||
|
||||
histogram
|
||||
.iter()
|
||||
.cloned()
|
||||
.filter(|&h| h != 0)
|
||||
.map(|h| h as f32 / s.len() as f32)
|
||||
.map(|ratio| -ratio * ratio.log2())
|
||||
.sum()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let arg = std::env::args().nth(1).expect("Need a string.");
|
||||
println!("Entropy of {} is {}.", arg, entropy(arg.as_bytes()));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue