From 565953296a6d29d494d70480c6f48a2147735f19 Mon Sep 17 00:00:00 2001 From: Logan King Date: Wed, 19 Oct 2022 16:22:30 -0400 Subject: [PATCH 1/5] remove unused struct definition --- src/bin/parkerrust.rs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/bin/parkerrust.rs b/src/bin/parkerrust.rs index b03549a..add58b4 100644 --- a/src/bin/parkerrust.rs +++ b/src/bin/parkerrust.rs @@ -9,13 +9,6 @@ fn findwords_parallel( bits_to_index: &HashMap, index_to_word: &Vec<&[u8]>, ) -> usize { - struct StartInfo { - totalbits: u32, - numwords: usize, - words: [usize; 5], - max_letter: usize, - skipped: i32, - } let mut words: [usize; 5] = [0; 5]; From 47252b3dd0197997b18a96492ca0533617c78317 Mon Sep 17 00:00:00 2001 From: Logan King Date: Wed, 19 Oct 2022 16:25:56 -0400 Subject: [PATCH 2/5] format --- src/bin/parkerrust.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bin/parkerrust.rs b/src/bin/parkerrust.rs index add58b4..354d310 100644 --- a/src/bin/parkerrust.rs +++ b/src/bin/parkerrust.rs @@ -9,7 +9,6 @@ fn findwords_parallel( bits_to_index: &HashMap, index_to_word: &Vec<&[u8]>, ) -> usize { - let mut words: [usize; 5] = [0; 5]; // let (sender1, receiver1) = crossbeam::channel::unbounded::(); From e97fdfa7858e787a9158eb1050e27e3a228b8395 Mon Sep 17 00:00:00 2001 From: Logan King Date: Wed, 19 Oct 2022 16:34:32 -0400 Subject: [PATCH 3/5] fix most of clippy --- src/bin/parkerrust.rs | 64 +++++++++++++++++++++---------------------- src/lib.rs | 4 +-- 2 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/bin/parkerrust.rs b/src/bin/parkerrust.rs index 354d310..0768166 100644 --- a/src/bin/parkerrust.rs +++ b/src/bin/parkerrust.rs @@ -71,8 +71,8 @@ fn findwords( if totalbits & w != 0 { 0usize } else { - let idx: usize = bits_to_index[&w]; - let mut newwords: [usize; 5] = words.clone(); + let idx: usize = bits_to_index[w]; + let mut newwords: [usize; 5] = *words; newwords[numwords] = idx; findwords( lettermask, @@ -88,40 +88,38 @@ fn findwords( } }) .sum::() - } else { - if numwords == 4 && skipped >= 0 { - let candidate = !(totalbits | lettermask[skipped as usize]) & 0x3FFFFFF; - if let Some(last_index) = bits_to_index.get(&candidate) { - words[numwords] = *last_index; + } else if numwords == 4 && skipped >= 0 { + let candidate = !(totalbits | lettermask[skipped as usize]) & 0x3FFFFFF; + if let Some(last_index) = bits_to_index.get(&candidate) { + words[numwords] = *last_index; - output(index_to_word, words); - numsolutions += 1 + output(index_to_word, words); + numsolutions += 1 + } + } else { + for w in letter_to_words_bits[i].iter() { + if totalbits & w != 0 { + continue; } - } else { - for w in letter_to_words_bits[i].iter() { - if totalbits & w != 0 { - continue; - } - let idx: usize = bits_to_index[&w]; - words[numwords] = idx; + let idx: usize = bits_to_index[w]; + words[numwords] = idx; - if numwords == 4 { - output(index_to_word, words); - numsolutions += 1 - } else { - numsolutions += findwords( - lettermask, - letter_to_words_bits, - bits_to_index, - index_to_word, - totalbits | w, - numwords + 1, - words, - i + 1, - skipped, - ) - } + if numwords == 4 { + output(index_to_word, words); + numsolutions += 1 + } else { + numsolutions += findwords( + lettermask, + letter_to_words_bits, + bits_to_index, + index_to_word, + totalbits | w, + numwords + 1, + words, + i + 1, + skipped, + ) } } } @@ -135,7 +133,7 @@ fn findwords( numsolutions } -fn output(index_to_word: &Vec<&[u8]>, words: &[usize; 5]) -> () { +fn output(index_to_word: &[&[u8]], words: &[usize; 5]) { // return; let str = format!( "{} {} {} {} {}", diff --git a/src/lib.rs b/src/lib.rs index 9c5f03b..5f4ef12 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -29,7 +29,7 @@ pub fn readwords<'a>( let char = *char; // _technically_ this loop will not work for the last word // In practice the last word has a duplicate letter so we don't care - if char != '\n' as u8 { + if char != b'\n' { bits |= 1 << (char as u32 - 'a' as u32); continue; } @@ -73,7 +73,7 @@ pub fn readwords<'a>( let mut reverseletterorder: [usize; 26] = [0; 26]; for i in 0..26 { - lettermask[i] = (1 as u32) << freq[i].letter; + lettermask[i] = 1_u32 << freq[i].letter; reverseletterorder[freq[i].letter as usize] = i; } From c94308f25dd47fcc15dc0b9933de617ff29d61cb Mon Sep 17 00:00:00 2001 From: Logan King Date: Wed, 19 Oct 2022 16:42:24 -0400 Subject: [PATCH 4/5] remove useless comment --- src/bin/parkerrust.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bin/parkerrust.rs b/src/bin/parkerrust.rs index 0768166..697312f 100644 --- a/src/bin/parkerrust.rs +++ b/src/bin/parkerrust.rs @@ -134,7 +134,6 @@ fn findwords( } fn output(index_to_word: &[&[u8]], words: &[usize; 5]) { - // return; let str = format!( "{} {} {} {} {}", unsafe { std::str::from_utf8_unchecked(index_to_word[words[0]]) }, From 4f28ad69ad4edb922c84bd6f6f709148ec011e67 Mon Sep 17 00:00:00 2001 From: Logan King Date: Wed, 19 Oct 2022 16:45:00 -0400 Subject: [PATCH 5/5] Put StartInfo back --- src/bin/parkerrust.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/bin/parkerrust.rs b/src/bin/parkerrust.rs index 697312f..f05cd03 100644 --- a/src/bin/parkerrust.rs +++ b/src/bin/parkerrust.rs @@ -9,6 +9,14 @@ fn findwords_parallel( bits_to_index: &HashMap, index_to_word: &Vec<&[u8]>, ) -> usize { + struct StartInfo { + totalbits: u32, + numwords: usize, + words: [usize; 5], + max_letter: usize, + skipped: i32, + } + let mut words: [usize; 5] = [0; 5]; // let (sender1, receiver1) = crossbeam::channel::unbounded::();