commit 68ee2e289b2cc9e1c5d38b3296e1ba9589bea0f9
parent a7c5d0a720eaa86068bfc054abbc31e43efd6b3a
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 31 Mar 2023 18:14:22 -0700
simplify code
Diffstat:
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/lechatphp/mod.rs b/src/lechatphp/mod.rs
@@ -178,9 +178,9 @@ fn solve_difficulty3(img: &DynamicImage) -> Result<String, CaptchaErr> {
Ok(answer)
}
-fn solve_path(starting: Letter, letters_map: &HashMap<char, Letter>, img: &DynamicImage) -> String {
+fn solve_path(starting: Letter, letters_map: &HashSet<Letter>, img: &DynamicImage) -> String {
let mut answer = String::new();
- let mut remaining: HashSet<_> = letters_map.values().collect();
+ let mut remaining: HashSet<_> = letters_map.iter().collect();
let mut letter = remaining.take(&starting).unwrap();
for _ in 0..NB_CHARS {
answer.push(letter.character);
@@ -198,11 +198,11 @@ fn solve_path(starting: Letter, letters_map: &HashMap<char, Letter>, img: &Dynam
answer
}
-fn find_letters(img: &DynamicImage) -> HashMap<char, Letter> {
+fn find_letters(img: &DynamicImage) -> HashSet<Letter> {
const IMAGE_WIDTH: u32 = 150;
const IMAGE_HEIGHT: u32 = 200;
const MIN_PX_FOR_LETTER: usize = 21;
- let mut letters_map: HashMap<char, Letter> = HashMap::new();
+ let mut letters_map: HashSet<Letter> = HashSet::new();
for y in 0..IMAGE_HEIGHT-LETTER_HEIGHT {
for x in 0..IMAGE_WIDTH-LETTER_WIDTH {
let letter_img = img.crop_imm(x, y, LETTER_WIDTH, LETTER_HEIGHT);
@@ -240,7 +240,7 @@ fn find_letters(img: &DynamicImage) -> HashMap<char, Letter> {
}
let letter = Letter::new(Point::new(x, y), c);
- letters_map.insert(c, letter); // Keep letters in hashmap for easy access
+ letters_map.insert(letter); // Keep letters in hashmap for easy access
break;
}
}
@@ -248,10 +248,10 @@ fn find_letters(img: &DynamicImage) -> HashMap<char, Letter> {
letters_map
}
-fn get_starting_letter(img: &DynamicImage, letters_map: &HashMap<char, Letter>) -> Option<Letter> {
+fn get_starting_letter(img: &DynamicImage, letters_map: &HashSet<Letter>) -> Option<Letter> {
const MIN_STARTING_PT_RED_PX: usize = 50;
let mut starting: Option<Letter> = None;
- for (_, letter) in letters_map.iter() {
+ for letter in letters_map.iter() {
let square = img.crop_imm(letter.offset.x-5, letter.offset.y-3, LETTER_WIDTH+5+6, LETTER_HEIGHT+3+2);
let count_red = count_red_px(&square);
if count_red > MIN_STARTING_PT_RED_PX {