Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.35 KB | None | 0 0
  1. import java.io.File;
  2. import java.util.Scanner;
  3.  
  4. /**
  5.  * Copyright © 2010 McKesson Corporation and/or one of its subsidiaries.
  6.  * All rights reserved.
  7.  */
  8.  
  9. /**
  10.  * @author BoHao Li
  11.  */
  12. public class E
  13. {
  14.     public static void main(String[] args) throws Exception
  15.     {
  16.         new E().doIt();
  17.     }
  18.  
  19.     private int m;
  20.  
  21.     private int n;
  22.  
  23.     public void doIt() throws Exception
  24.     {
  25.         // Scanner sc = new Scanner(System.in);
  26.         Scanner sc = new Scanner(new File("E.in"));
  27.         m = sc.nextInt();
  28.         n = sc.nextInt();
  29.         boolean[][] maze = new boolean[m][n];
  30.  
  31.         int points = sc.nextInt();
  32.         for (int i = 0; i < points; i++)
  33.         {
  34.             int x = sc.nextInt();
  35.             int y = sc.nextInt();
  36.             System.out.println(x + ": " + y);
  37.             maze[x][y] = true;
  38.         }
  39.  
  40.         print(maze);
  41.         int generations = sc.nextInt();
  42.  
  43.         for (int i = 0; i < generations; i++)
  44.         {
  45.             boolean[][] copyMaze = maze;
  46.             for (int j = 0; j < maze.length; j++)
  47.             {
  48.                 for (int k = 0; k < maze.length; k++)
  49.                 {
  50.                     if (!maze[j][k] && check3Alive(j, k, maze))
  51.                     {
  52.                         copyMaze[j][k] = true;
  53.                     }
  54.  
  55.                     if (maze[j][k] && fewer2Alive(j, k, maze))
  56.                     {
  57.                         copyMaze[j][k] = false;
  58.                     }
  59.                 }
  60.             }
  61.             print(maze);
  62.             System.out.println();
  63.             print(copyMaze);
  64.         }
  65.     }
  66.  
  67.     /**
  68.      * @param j
  69.      * @param k
  70.      * @param maze
  71.      * @return
  72.      */
  73.     private boolean fewer2Alive(int j, int k, boolean[][] maze)
  74.     {
  75.         if (j == 0 || j == (m - 1))
  76.         {
  77.             // TODO:
  78.             return false;
  79.         }
  80.  
  81.         System.out.println(k);
  82.         int count = 0;
  83.         if (maze[j - 1][k - 1])
  84.         {
  85.             count++;
  86.         }
  87.         if (maze[j - 1][k])
  88.         {
  89.             count++;
  90.         }
  91.         if (maze[j - 1][k + 1])
  92.         {
  93.             count++;
  94.         }
  95.         if (maze[j][k - 1])
  96.         {
  97.             count++;
  98.         }
  99.         if (maze[j][k + 1])
  100.         {
  101.             count++;
  102.         }
  103.         if (maze[j + 1][k - 1])
  104.         {
  105.             count++;
  106.         }
  107.         if (maze[j + 1][k])
  108.         {
  109.             count++;
  110.         }
  111.         if (maze[j + 1][k + 1])
  112.         {
  113.             count++;
  114.         }
  115.  
  116.         if (count < 2 || count > 3)
  117.         {
  118.             return true;
  119.         }
  120.         return false;
  121.     }
  122.  
  123.     /**
  124.      * @param j
  125.      * @param k
  126.      * @param maze
  127.      * @return
  128.      */
  129.     private boolean check3Alive(int j, int k, boolean[][] maze)
  130.     {
  131.         if (j == 0 || j == (m - 1))
  132.         {
  133.             // TODO:
  134.             return false;
  135.         }
  136.  
  137.         int count = 0;
  138.         if (k == 0)
  139.         {
  140.             if (maze[j - 1][m - 1])
  141.             {
  142.                 count++;
  143.             }
  144.             if (maze[j - 1][k])
  145.             {
  146.                 count++;
  147.             }
  148.             if (maze[j - 1][k + 1])
  149.             {
  150.                 count++;
  151.             }
  152.             if (maze[j][m - 1])
  153.             {
  154.                 count++;
  155.             }
  156.             if (maze[j][k + 1])
  157.             {
  158.                 count++;
  159.             }
  160.             if (maze[j + 1][m - 1])
  161.             {
  162.                 count++;
  163.             }
  164.             if (maze[j + 1][k])
  165.             {
  166.                 count++;
  167.             }
  168.             if (maze[j + 1][k + 1])
  169.             {
  170.                 count++;
  171.             }
  172.         }
  173.         else
  174.         {
  175.             if (maze[j - 1][k - 1])
  176.             {
  177.                 count++;
  178.             }
  179.             if (maze[j - 1][k])
  180.             {
  181.                 count++;
  182.             }
  183.             if (maze[j - 1][k + 1])
  184.             {
  185.                 count++;
  186.             }
  187.             if (maze[j][k - 1])
  188.             {
  189.                 count++;
  190.             }
  191.             if (maze[j][k + 1])
  192.             {
  193.                 count++;
  194.             }
  195.             if (maze[j + 1][k - 1])
  196.             {
  197.                 count++;
  198.             }
  199.             if (maze[j + 1][k])
  200.             {
  201.                 count++;
  202.             }
  203.             if (maze[j + 1][k + 1])
  204.             {
  205.                 count++;
  206.             }
  207.         }
  208.  
  209.         if (count == 3)
  210.         {
  211.             return true;
  212.         }
  213.         return false;
  214.     }
  215.  
  216.     void print(boolean[][] arr)
  217.     {
  218.         for (boolean[] element : arr)
  219.         {
  220.             for (int j = 0; j < arr.length; j++)
  221.             {
  222.                 if (element[j])
  223.                 {
  224.                     System.out.print("T ");
  225.                 }
  226.                 else
  227.                 {
  228.                     System.out.print("F ");
  229.                 }
  230.  
  231.             }
  232.             System.out.println();
  233.         }
  234.     }
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement