diff --git a/klout/src/main.rs b/klout/src/main.rs index 67d4118..5962354 100644 --- a/klout/src/main.rs +++ b/klout/src/main.rs @@ -1,6 +1,6 @@ use core::f64; use eyre::Result; -use rand::rngs::ThreadRng; +use rand::{rngs::ThreadRng, Rng}; use std::{ collections::HashMap, io::{self, Write}, @@ -49,9 +49,9 @@ const RINDEX: Finger = F!(Right, Index); #[rustfmt::skip] const MATRIX_EFFORT: &[f64; MATRIX_COUNT] = &[ - 15., 3.0, 1.5, 3.0, 10., 10., 3.0, 1.5, 3.0, 15., - 8., 1., 0.5, 0.5, 4., 4., 0.5, 0.5, 1., 8., - 1.5, 2.0, 1., 1., 7., 5., 1., 2.0, 1.5, 10., + 100., 3., 5., 3., 30., 30., 3., 5., 3., 100., + 50., 2., 1., 1., 15., 15., 1., 1., 2., 50., + 25., 7., 5., 7., 30., 1., 5., 7., 5., 100., ]; #[rustfmt::skip] @@ -227,10 +227,21 @@ fn all_bigrams() -> &'static [String] { unsafe { ALL_BIGRAMS.as_ref().unwrap_unchecked() } } -const N_WORKERS: usize = 16; +const N_WORKERS: usize = 32; fn mutate_layout(layout: &mut Layout, rng: &mut ThreadRng, num_swaps: usize) { - for _ in 0..num_swaps {} + for _ in 0..num_swaps { + let ch1 = CHARACTERS + .chars() + .nth(rng.gen_range(0..CHARACTERS.len())) + .unwrap(); + let ch2 = CHARACTERS + .chars() + .nth(rng.gen_range(0..CHARACTERS.len())) + .unwrap(); + + layout.key_indices.swap(ch1 as usize, ch2 as usize); + } } struct WorkerThreadInit { @@ -291,6 +302,7 @@ fn ui_thread_run(rx: Receiver<(f64, Layout)>) { for (eff, layout) in rx.iter() { clear_screen(); print_layout(layout); + println!(); println!("{eff}"); } } @@ -314,6 +326,11 @@ fn aggregator_thread_run( } fn main() -> Result<()> { + unsafe { + init_all_bigrams(); + init_bigram_freqs(); + }; + let (tx_agg, rx_agg) = std::sync::mpsc::channel(); let (tx_ui, rx_ui) = std::sync::mpsc::channel(); @@ -332,7 +349,7 @@ fn main() -> Result<()> { worker_thread_run(WorkerThreadInit { initial_layout: INITIAL_LAYOUT, report: tx, - max_dev: 1000., + max_dev: 200., swaps: 1, }) })