рд▓реЗрд╡реЗрдирд╢реАрди рдХрдо рд╕реЗ рдХрдо рджреВрд░реА рдХреА рдЪрд░рд┐рддреНрд░ рдкрд╣рдЪрд╛рди

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЖрд╡реЗрджрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЪрд░рд┐рддреНрд░ рдорд╛рдиреНрдпрддрд╛ рдХрд╛ рдХрд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ - рдЖрдк рдХрдИ рддреИрдпрд╛рд░ рдУрд╕реАрдЖрд░-рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ рд▓рдЧрднрдЧ рдкреВрд░реНрдг рд╣реИрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдХрднреА-рдХрднреА рддреГрддреАрдп-рдкрдХреНрд╖ "рдкрд░рд┐рд╖реНрдХреГрдд" рдУрд╕реАрдЖрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдорд╛рдиреНрдпрддрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдп рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдпрд╣ рдареАрдХ рд╡рд╣реА рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдореЗрд░реЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдерд╛, рдФрд░ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: рдмрдВрдж рдкрд░рд┐рдпреЛрдЬрдирд╛, рдЗрд╕рдХреЗ рдЖрдЧреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде, рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рддрд┐рдмрдВрдз рдФрд░ рдЬреБрдбрд╝реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЖрдХрд╛рд░, рд╕рднреА рдФрд░ рдЕрдзрд┐рдХ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдкрд╣рдЪрд╛рди рдХрд░рдиреА рд╣реИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдг рд╕реЗрдЯред


рдорд╛рдиреНрдпрддрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд░рд▓ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рдмрд╕реЗ рд╕рдЯреАрдХ, рддреЗрдЬ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЕрдЪреНрдЫреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИред


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрд░рдЪрд┐рдд рд░реВрдк рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рд╕реНрдХреИрди рдХреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдкреБрдЯ рд╣реИред рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рд╕реНрдерд┐рдд рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдХ-рд╡рд░реНрдг рдХреЛрдб рд╣реИред рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдЗрд╕ рдкреНрд░рддреАрдХ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдирд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджрд┐рдП рдЧрдП рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд░реЛрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░реЗрдВред



рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЖрд░реЗрдЦ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:




рдЪреВрдВрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдкреНрд░рддреАрдХ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрд╛рдЯрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреАрдХ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рднреА "рдЕрдирд┐рдпрдорд┐рддрддрд╛рдУрдВ" рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЫрд╡рд┐ рдХреЛ рдореЛрдиреЛрдХреНрд░реЛрдо (рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж) рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред



short width = 45, height = 40, offsetTop = -10, offsetLeft = -70;
BufferedImage image = ImageIO.read(file);
BufferedImage symbol = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
Graphics2D g = symbol.createGraphics();
g.drawImage(image, offsetLeft, offsetTop, null);

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдореА рдЦрдВрдб "рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкрд┐рдХреНрд╕реЗрд▓" рдХреЛ рдПрдХ рдмрд╛рдЗрдирд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рдд, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, '*' рдПрдХ рдХрд╛рд▓реЗ рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ рд╕рдлреЗрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рд╣реИред



short whiteBg = -1;
StringBuilder binaryString = new StringBuilder();  
for (short y = 1; y < height; y++)
   for (short x = 1; x < width; x++) {
       int rgb = symbol.getRGB(x, y);
       binaryString.append(rgb == whiteBg ? " " : "*");
   }

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдкреВрд░реНрд╡-рддреИрдпрд╛рд░ рд╕рдВрджрд░реНрдн рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛ рд╡рд┐рдзрд┐ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ) рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо рд▓реЗрд╡реЗрдиреНрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

int min = 1000000;
char findSymbol = "";
for (Map.Entry<Character, String> entry : originalMap.entrySet()) {
     int levenshtein = levenshtein(binaryString.toString(), entry.getValue());
     if (levenshtein < min) {
             min = levenshtein;
             findSymbol = entry.getKey();
     }
}

рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рдЦреЛрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдорд╛рдирдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

public static int levenshtein(String targetStr, String sourceStr) {
        int m = targetStr.length(), n = sourceStr.length();
        int[][] delta = new int[m + 1][n + 1];
        for (int i = 1; i <= m; i++)
            delta[i][0] = i;
        for (int j = 1; j <= n; j++)
            delta[0][j] = j;
        for (int j = 1; j <= n; j++)
            for (int i = 1; i <= m; i++) {
                if (targetStr.charAt(i - 1) == sourceStr.charAt(j - 1))
                    delta[i][j] = delta[i - 1][j - 1];
                else
                    delta[i][j] = Math.min(delta[i - 1][j] + 1,
                            Math.min(delta[i][j - 1] + 1, delta[i - 1][j - 1] + 1));
            }
        return delta[m][n];
    }

рдкрд░рд┐рдгрд╛рдореА рдЦреЛрдЬрд╕рдореВрд▓ рд╣рдорд╛рд░рд╛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЪрд░рд┐рддреНрд░ рд╣реЛрдЧрд╛ред

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдорд╛рдиреНрдпрддрд╛ рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдВрдЪреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдИ рд╕рдВрдХреЗрддрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ (рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдлреЛрдВрдЯ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛, рдЫрд╡рд┐ рдЧреБрдгрд╡рддреНрддрд╛, рдЖрджрд┐) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рд╡рд┐рдзрд┐ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдореБрджреНрджреЛрдВ рдЬреИрд╕реЗ "рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдорд╛рдирддрд╛" рдХреЗ рд╕рд╛рде рднреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "L" <-> рд╣реИред "рдкреА", "5" <-> "рдПрд╕", "рдУ" <-> "0"ред рдЪреВрдВрдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╛рдЗрдирд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ "рдПрд▓" рдФрд░ "рдкреА" рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рд╣рдореЗрд╢рд╛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд "рдПрд▓" рдФрд░ рд╕рдВрджрд░реНрдн рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдПрд▓" рдХреЗ рдмреАрдЪ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реЛрдЧреА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреБрдЫ "рдЕрдирд┐рдпрдорд┐рддрддрд╛рдУрдВ" рдХреЗ рд╕рд╛рде рднреАред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрд╛рд╢ рдЦреЗрд▓рдиреЗ рдХреА рдорд╛рдиреНрдпрддрд╛) рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдиреНрдпреВрд░реЙрдиреНрд╕ рдФрд░ рдЕрдиреНрдп рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдХрдИ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓реЗ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

All Articles