commit fc4944ffc0622e53e944036bef657ed719646d7a
parent 53308f6fb956ee8d01ae73e094177afed62c0ff3
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 1 Apr 2023 01:04:57 -0700
simplify code
Diffstat:
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/src/lechatphp/mod.rs b/src/lechatphp/mod.rs
@@ -112,8 +112,7 @@ fn solve_difficulty2(img: &DynamicImage) -> Option<String> {
for i in 0..NB_CHARS {
let sub_img = img.crop_imm(LEFT_PADDING + ((LETTER_WIDTH +1)*i), TOP_PADDING, LETTER_WIDTH, LETTER_HEIGHT);
for c in ALPHABET1.chars() {
- let good_letter_img = get_letter_img(c);
- if img_contains_letter(&sub_img, &good_letter_img) {
+ if img_contains_letter(&sub_img, c) {
answer.push(c);
break;
}
@@ -209,16 +208,14 @@ fn find_letters(img: &DynamicImage) -> Result<HashSet<Letter>, CaptchaErr> {
continue;
}
'alphabet_loop: for c in ALPHABET1.chars() {
- let good_letter_img = get_letter_img(c);
- if !img_contains_letter(&letter_img, &good_letter_img) {
+ if !img_contains_letter(&letter_img, c) {
continue;
}
// "w" fits in "W". So if we find "W" 1 px bellow, discard "w"
for (a, b, x, y) in vec![('w', 'W', x, y+1), ('k', 'K', x+1, y+1)] {
if c == a {
- let capital_w_img = get_letter_img(b);
let one_px_down_img = img.crop_imm(x, y, LETTER_WIDTH, LETTER_HEIGHT);
- if img_contains_letter(&one_px_down_img, &capital_w_img) {
+ if img_contains_letter(&one_px_down_img, b) {
continue 'alphabet_loop;
}
}
@@ -265,7 +262,8 @@ impl From<Point> for bresenham::Point {
}
// give an image and a valid letter image, return either or not the letter is in that image.
-fn img_contains_letter(img: &DynamicImage, letter_img: &DynamicImage) -> bool {
+fn img_contains_letter(img: &DynamicImage, c: char) -> bool {
+ let letter_img = get_letter_img(c);
if letter_img.dimensions() != img.dimensions() {
return false;
}