Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.imageio.ImageIO;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.image.BufferedImage;
- import java.io.IOException;
- class Neuron {
- byte[][] mem = new byte[16][16];
- Neuron(byte[][] mem) {
- this.mem = mem;
- }
- public int check(byte[][] in) {
- int out = 0;
- for (int i = 0; i < 16; i++) {
- for (int j = 0; j < 16; j++) {
- if (mem[i][j] == in[i][j]) { out++; }
- }
- }
- return out;
- }
- }
- class Panel extends JPanel {
- public static final int STEP = (518 - 6) / 16;
- byte[][] matrix = new byte[16][16];
- public static final int NEURON_COUNT = 10;
- private static Neuron[] neuronWeb = new Neuron[NEURON_COUNT];
- Panel() {
- for (int i = 0; i < NEURON_COUNT; i++) {
- neuronWeb[i] = new Neuron(getLesson("/samples/lessons/" + i + ".BMP"));
- }
- for (byte[] i: matrix) {
- for (byte j: i) {
- j = -1;
- }
- }
- this.addMouseListener(new MouseListener() {
- @Override
- public void mouseClicked(MouseEvent e) {
- int x = (e.getX() - 3) / STEP;
- int y = (e.getY() - 3) / STEP;
- if (e.getButton() == 3) {
- matrix[x][y] = 0;
- } else {
- matrix[x][y] = -1;
- }
- repaint();
- }
- @Override
- public void mousePressed(MouseEvent e) {}
- @Override
- public void mouseReleased(MouseEvent e) {}
- @Override
- public void mouseEntered(MouseEvent e) {}
- @Override
- public void mouseExited(MouseEvent e) {}
- });
- this.addKeyListener(new KeyListener() {
- @Override
- public void keyTyped(KeyEvent e) {}
- @Override
- public void keyPressed(KeyEvent e) {
- if (e.getKeyCode() == KeyEvent.VK_ENTER) {
- System.out.println(check(getIn()));
- }
- }
- @Override
- public void keyReleased(KeyEvent e) {}
- });
- this.setFocusable(true);
- }
- @Override
- public void paint(Graphics g) {
- g.setColor(new Color(255, 255, 255));
- g.fillRect(0, 0, this.getWidth(), this.getHeight());
- g.setColor(Color.orange);
- for (int i = 0; i < 515; i += STEP) {
- g.drawLine(i + 3, 0, i + 3, this.getHeight());
- }
- for (int i = 0; i < 515; i += STEP) {
- g.drawLine(0, i + 3, this.getWidth(), i + 3);
- }
- g.setColor(Color.black);
- for (int i = 0; i < 16; i++) {
- for (int j = 0; j < 16; j++) {
- if (matrix[i][j] == -1) {
- g.fillRect(i * STEP + 3, j * STEP + 3, STEP, STEP);
- }
- }
- }
- }
- public byte[][] getMatrix() {
- return matrix;
- }
- public byte[][] getIn() {
- return getMatrix();
- }
- public byte[][] getLesson(String path) {
- byte[][] out;
- try {
- BufferedImage image = ImageIO.read(getClass().getResourceAsStream(path));
- out = new byte[16][16];
- for (int i = 0; i < image.getWidth(); i++) {
- for (int j = 0; j < image.getHeight(); j++) {
- out[i][j] = (byte) (image.getRGB(i,j));
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- return out;
- }
- public int check(byte[][] in) {
- int max = Integer.MIN_VALUE;
- int out = -1;
- for (int i = 0; i < NEURON_COUNT; i++) {
- Neuron neuron = neuronWeb[i];
- int weight = neuron.check(in);
- if (max < weight) {
- max = weight;
- out = i;
- }
- }
- return out;
- }
- }
- public class Main extends JFrame {
- Panel panel = new Panel();
- Main() {
- this.setSize(518, 545);
- this.setLocationRelativeTo(null);
- this.setResizable(false);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.add(panel);
- this.setVisible(true);
- }
- public static void main(String[] args) {
- new Main();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement