diff options
| author | tslil clingman <tslil@posteo.de> | 2022-10-22 16:34:58 +0200 |
|---|---|---|
| committer | tslil clingman <tslil@posteo.de> | 2022-10-22 18:59:15 +0200 |
| commit | 5f3c2fbd14dd1dc3fd78df31c8150ee5ec2bdc64 (patch) | |
| tree | 0e00e4f3debf79c7280fc17a265651127fc26fca /srchr/src/evaluation.rs | |
| parent | f6d4be2195a9103e42b00c9aa362c62d079c3f4e (diff) | |
add lsb calculation (cannot optimised for with prelayouts)
Diffstat (limited to 'srchr/src/evaluation.rs')
| -rw-r--r-- | srchr/src/evaluation.rs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/srchr/src/evaluation.rs b/srchr/src/evaluation.rs index 3d171b0..6621700 100644 --- a/srchr/src/evaluation.rs +++ b/srchr/src/evaluation.rs @@ -94,6 +94,7 @@ pub struct Evaluation { keypress_perc: [f32; NUM_KEYS], sfb: [f32; 8], dsfb: [f32; 8], + lsb: f32, } impl Evaluation { @@ -101,6 +102,7 @@ impl Evaluation { let mut keypress_perc: [f32; NUM_KEYS] = [0.0; NUM_KEYS]; let mut sfb: [f32; 8] = [0.0; 8]; let mut dsfb: [f32; 8] = [0.0; 8]; + let mut lsb = 0.0; for (i, &c) in layout.get_keys().iter().enumerate() { keypress_perc[i] = corpus.get_character_perc(c as u8); @@ -180,10 +182,32 @@ impl Evaluation { } } + // LSB for index-middle only + for left in [true, false] { + let mind = if left { 2 } else { 7 }; + let iind = if left { 4 } else { 5 }; + let m1 = layout.get_key(mind + 10 * 0); + let m2 = layout.get_key(mind + 10 * 1); + let m3 = layout.get_key(mind + 10 * 2); + let i1 = layout.get_key(iind + 10 * 0); + let i2 = layout.get_key(iind + 10 * 1); + let i3 = layout.get_key(iind + 10 * 2); + lsb += corpus.get_bigram_perc(m1, i1) + + corpus.get_bigram_perc(m1, i2) + + corpus.get_bigram_perc(m1, i3) + + corpus.get_bigram_perc(m2, i1) + + corpus.get_bigram_perc(m2, i2) + + corpus.get_bigram_perc(m2, i3) + + corpus.get_bigram_perc(m3, i1) + + corpus.get_bigram_perc(m3, i2) + + corpus.get_bigram_perc(m3, i3); + } + return Evaluation { keypress_perc, sfb, dsfb, + lsb, }; } @@ -210,7 +234,7 @@ impl Evaluation { } } - result += &format!("\nHand usage: {:.2}% vs {:.2}%", lh, rh); + result += &format!("\nHand usage: {:.2}% vs {:.2}%", lh * 100.0, rh * 100.0); result += "\nSFB distribution : "; for (i, &u) in self.sfb.iter().enumerate() { @@ -226,6 +250,7 @@ impl Evaluation { let dsfb = self.dsfb.iter().sum::<f32>(); result += &format!("\nTotal sfb: {:.3}%", sfb * 100.0); result += &format!("\nTotal dsfb: {:.3}%", dsfb * 100.0); + result += &format!("\nTotal lsb: {:.3}%", self.lsb * 100.0); return result; } |
