Advertisement
Guest User

Untitled

a guest
Oct 16th, 2017
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.44 KB | None | 0 0
  1. package Exams;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.Scanner;
  7.  
  8. public class ChessKnight {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.         Character[][] board = new Character[8][8];
  12.         for (int i = 0; i <=7 ; i++) {
  13.             String[] row = scanner.nextLine().split("\\|");
  14.             for (int j = 0; j <=7 ; j++) {
  15.                 board[i][j]=row[j].toCharArray()[0];
  16.             }
  17.         }
  18.         int countInvalid = 0;
  19.         int boardOutOf = 0;
  20.         List<Character> pieces = new ArrayList<>();
  21.         int startCoordinates = Integer.parseInt(scanner.nextLine());
  22.         while (true){
  23.             String input = scanner.nextLine();
  24.             if(input.equals("END")){
  25.                 System.out.print("Pieces get: ");
  26.                 for (int i = 0; i < pieces.size()-1; i++) {
  27.                     Character piece = pieces.get(i);
  28.  
  29.                     System.out.print(piece+", ");
  30.                 }
  31.                 System.out.println(pieces.get(pieces.size()-1));
  32.                 System.out.println("Invalid moves: "+countInvalid);
  33.                 System.out.println("Board out moves: "+boardOutOf);
  34.                 break;
  35.             }
  36.             int[] coordinates = Arrays.stream(input.split("->"))
  37.                     .map(String::trim)
  38.                     .mapToInt(Integer::parseInt)
  39.                     .toArray();
  40.             if(!isValidMove(coordinates[0],coordinates[1])){
  41.                 countInvalid++;
  42.             }else if(coordinates[0]/10>7||coordinates[0]%10>7||coordinates[1]/10>7||coordinates[1]%10>7){
  43.                 boardOutOf++;
  44.             }else{
  45.                 Character toAdd = board[(coordinates[1]%10)][(coordinates[1]/10)];
  46.                 if(toAdd!=' '){
  47.                     pieces.add(toAdd);
  48.                 }
  49.             }
  50.  
  51.         }
  52.     }
  53.  
  54.     private static boolean isValidMove(int start,int end) {
  55.         int rowS = start/10;
  56.         int colS= start%10;
  57.         int rowF = end/10;
  58.         int colF= end%10;
  59.         if(colS-2==colF&&(rowS-1==rowF||rowS+1==rowF))
  60.             return true;
  61.         if(colS+2==colF&&(rowS-1==rowF||rowS+1==rowF))
  62.             return true;
  63.         if(rowS+2==rowF&&(colS-1==colF||colS+1==colF))
  64.             return true;
  65.         if (rowS - 2 == rowF) if (colS - 1 == colF || colS + 1 == colF) return true;
  66.         return false;
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement