Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.54 KB | None | 0 0
  1. import javax.imageio.ImageIO;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.KeyEvent;
  5. import java.awt.event.KeyListener;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.MouseListener;
  8. import java.awt.image.BufferedImage;
  9. import java.io.IOException;
  10.  
  11. class Neuron  {
  12.     byte[][] mem = new byte[16][16];
  13.  
  14.     Neuron(byte[][] mem) {
  15.         this.mem = mem;
  16.     }
  17.  
  18.     public int check(byte[][] in) {
  19.         int out = 0;
  20.  
  21.         for (int i = 0; i < 16; i++) {
  22.             for (int j = 0; j < 16; j++) {
  23.                 if (mem[i][j] == in[i][j]) { out++; }
  24.             }
  25.         }
  26.  
  27.         return out;
  28.     }
  29. }
  30.  
  31. class Panel extends JPanel {
  32.     public static final int STEP = (518 - 6) / 16;
  33.     byte[][] matrix = new byte[16][16];
  34.     public static final int NEURON_COUNT = 10;
  35.     private static Neuron[] neuronWeb = new Neuron[NEURON_COUNT];
  36.  
  37.     Panel() {
  38.         for (int i = 0; i < NEURON_COUNT; i++) {
  39.             neuronWeb[i] = new Neuron(getLesson("/samples/lessons/" + i + ".BMP"));
  40.         }
  41.  
  42.         for (byte[] i: matrix) {
  43.             for (byte j: i) {
  44.                 j = -1;
  45.             }
  46.         }
  47.  
  48.         this.addMouseListener(new MouseListener() {
  49.             @Override
  50.             public void mouseClicked(MouseEvent e) {
  51.                 int x = (e.getX() - 3) / STEP;
  52.                 int y = (e.getY() - 3) / STEP;
  53.  
  54.                 if (e.getButton() == 3) {
  55.                     matrix[x][y] = 0;
  56.                 } else {
  57.                     matrix[x][y] = -1;
  58.                 }
  59.                 repaint();
  60.             }
  61.  
  62.             @Override
  63.             public void mousePressed(MouseEvent e) {}
  64.  
  65.             @Override
  66.             public void mouseReleased(MouseEvent e) {}
  67.  
  68.             @Override
  69.             public void mouseEntered(MouseEvent e) {}
  70.  
  71.             @Override
  72.             public void mouseExited(MouseEvent e) {}
  73.         });
  74.  
  75.         this.addKeyListener(new KeyListener() {
  76.             @Override
  77.             public void keyTyped(KeyEvent e) {}
  78.  
  79.             @Override
  80.             public void keyPressed(KeyEvent e) {
  81.                 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
  82.                     System.out.println(check(getIn()));
  83.                 }
  84.             }
  85.  
  86.             @Override
  87.             public void keyReleased(KeyEvent e) {}
  88.         });
  89.  
  90.         this.setFocusable(true);
  91.     }
  92.  
  93.     @Override
  94.     public void paint(Graphics g) {
  95.         g.setColor(new Color(255, 255, 255));
  96.         g.fillRect(0, 0, this.getWidth(), this.getHeight());
  97.  
  98.         g.setColor(Color.orange);
  99.         for (int i = 0; i < 515; i += STEP) {
  100.             g.drawLine(i + 3, 0, i + 3, this.getHeight());
  101.         }
  102.  
  103.         for (int i = 0; i < 515; i += STEP) {
  104.             g.drawLine(0, i + 3, this.getWidth(), i + 3);
  105.         }
  106.  
  107.         g.setColor(Color.black);
  108.         for (int i = 0; i < 16; i++) {
  109.             for (int j = 0; j < 16; j++) {
  110.                 if (matrix[i][j] == -1) {
  111.                     g.fillRect(i * STEP + 3, j * STEP + 3, STEP, STEP);
  112.                 }
  113.             }
  114.         }
  115.     }
  116.  
  117.     public byte[][] getMatrix() {
  118.         return matrix;
  119.     }
  120.  
  121.     public byte[][] getIn() {
  122.         return getMatrix();
  123.     }
  124.  
  125.     public byte[][] getLesson(String path) {
  126.         byte[][] out;
  127.         try {
  128.             BufferedImage image = ImageIO.read(getClass().getResourceAsStream(path));
  129.             out = new byte[16][16];
  130.  
  131.             for (int i = 0; i < image.getWidth(); i++) {
  132.                 for (int j = 0; j < image.getHeight(); j++) {
  133.                     out[i][j] = (byte) (image.getRGB(i,j));
  134.                 }
  135.             }
  136.         } catch (IOException e) {
  137.             e.printStackTrace();
  138.             return null;
  139.         }
  140.         return out;
  141.     }
  142.  
  143.     public int check(byte[][] in) {
  144.         int max = Integer.MIN_VALUE;
  145.         int out = -1;
  146.  
  147.         for (int i = 0; i < NEURON_COUNT; i++) {
  148.             Neuron neuron = neuronWeb[i];
  149.             int weight = neuron.check(in);
  150.             if (max < weight) {
  151.                 max = weight;
  152.                 out = i;
  153.             }
  154.         }
  155.  
  156.         return out;
  157.     }
  158. }
  159.  
  160. public class Main extends JFrame {
  161.     Panel panel = new Panel();
  162.  
  163.     Main() {
  164.         this.setSize(518, 545);
  165.         this.setLocationRelativeTo(null);
  166.         this.setResizable(false);
  167.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  168.         this.add(panel);
  169.         this.setVisible(true);
  170.     }
  171.  
  172.     public static void main(String[] args) {
  173.         new Main();
  174.     }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement