Advertisement
bobo_bobkata

Untitled

Jun 1st, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.59 KB | None | 0 0
  1. package PredvaritelnoAdvanced.Tesove.SampleExam;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Scanner;
  5.  
  6. public class Sneaking {
  7.  
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.         int size = Integer.parseInt(scanner.nextLine());
  11.         char[][] mas = new char[size][];
  12.         int rowNick = 0;
  13.         int colNick = 0;
  14.         int rowSam = 0;
  15.         int colSam = 0;
  16.         for (int row = 0; row < mas.length; row++) {
  17.             String[] data = scanner.nextLine().split("");
  18.             mas[row] = new char[data.length];
  19.             for (int col = 0; col < mas[row].length; col++) {
  20.                 mas[row][col] = data[col].charAt(0);
  21.                 if (mas[row][col] == 'N') {
  22.                     rowNick = row;
  23.                     colNick = col;
  24.                 } else if (mas[row][col] == 'S') {
  25.                     rowSam = row;
  26.                     colSam = col;
  27.                 }
  28.             }
  29.         }
  30.         String[] commands = scanner.nextLine().split("");
  31.         loop:
  32.         for (int i = 0; i < commands.length; i++) {
  33.             for (int row = 0; row < mas.length; row++) {
  34.                 for (int col = 0; col < mas[row].length; col++) {
  35.                     if (mas[row][col] == 'b') {
  36.                         if (col + 1 == mas[row].length) {
  37.                             mas[row][col] = 'd';
  38.                         } else {
  39.                             mas[row][col] = '.';
  40.                             mas[row][col + 1] = 'b';
  41.                         }
  42.                         if (isEnemyOnRow(mas, rowSam, rowNick, colNick)) {
  43.                             break loop;
  44.                         }
  45.                         break;
  46.                     } else if (mas[row][col] == 'd') {
  47.                         if (col - 1 == -1) {
  48.                             mas[row][col] = 'b';
  49.                         } else {
  50.                             mas[row][col] = '.';
  51.                             mas[row][col - 1] = 'd';
  52.                         }
  53.                         if (isEnemyOnRow(mas, rowSam, rowNick, colNick)) {
  54.                             break loop;
  55.                         }
  56.                         break;
  57.                     }
  58.                 }
  59.             }
  60.             switch (commands[i]) {
  61.                 case "U":
  62.                     mas[rowSam][colSam] = '.';
  63.                     mas[rowSam - 1][colSam] = 'S';
  64.                     rowSam--;
  65.                     break;
  66.                 case "D":
  67.                     mas[rowSam][colSam] = '.';
  68.                     mas[rowSam + 1][colSam] = 'S';
  69.                     rowSam++;
  70.                     break;
  71.                 case "R":
  72.                     mas[rowSam][colSam] = '.';
  73.                     mas[rowSam][colSam + 1] = 'S';
  74.                     colSam++;
  75.                     break;
  76.                 case "L":
  77.                     mas[rowSam][colSam] = '.';
  78.                     mas[rowSam][colSam - 1] = 'S';
  79.                     colSam--;
  80.                     break;
  81.             }
  82.             if (isEnemyOnRow(mas, rowSam, rowNick, colNick)) {
  83.                 break;
  84.             }
  85.         }
  86.         if (mas[rowNick][colNick] == 'X') {
  87.             System.out.println("Nikoladze killed!");
  88.         } else if (mas[rowSam][colSam] == 'X') {
  89.             System.out.println("Sam died at " + rowSam + ", " + colSam);
  90.         }
  91.         for (char[] arr : mas) {
  92.             System.out.println(Arrays.toString(arr).replaceAll("[\\[\\], ]", ""));
  93.         }
  94.     }
  95.  
  96.     private static boolean isEnemyOnRow(char[][] mas, int rowSam, int rowNick, int colNick) {
  97.         for (int searchOnCol = 0; searchOnCol < mas[rowSam].length; searchOnCol++) {
  98.             if (mas[rowSam][searchOnCol] == 'b') {
  99.                 for (int colToRight = searchOnCol + 1; colToRight < mas[rowSam].length; colToRight++) {
  100.                     if (mas[rowSam][colToRight] == 'S') {
  101.                         mas[rowSam][colToRight] = 'X';
  102.                         return true;
  103.                     }
  104.                 }
  105.                 return false;
  106.             } else if (mas[rowSam][searchOnCol] == 'd') {
  107.                 for (int colToLeft = searchOnCol - 1; colToLeft >= 0; colToLeft--) {
  108.                     if (mas[rowSam][colToLeft] == 'S') {
  109.                         mas[rowSam][colToLeft] = 'X';
  110.                         return true;
  111.                     }
  112.                 }
  113.                 return false;
  114.             } else if (mas[rowSam][searchOnCol] == 'N') {
  115.                 mas[rowNick][colNick] = 'X';
  116.                 return true;
  117.             }
  118.         }
  119.         return false;
  120.     }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement