Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class PresentDelivery {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int presents = Integer.parseInt(scanner.nextLine());
- int rows = Integer.parseInt(scanner.nextLine());
- int cols = rows;
- char[][] matrix = new char[rows][];
- int rowSanta = -1;
- int colSanta = -1;
- int countNiceKids = 0;
- int presentsForNiceKids = 0;
- for (int row = 0; row < rows; row++) {
- String charsAsString = String.join("", scanner.nextLine().split("\\s+"));
- matrix[row] = charsAsString.toCharArray();
- for (int col = 0; col < matrix[row].length; col++) {
- if (matrix[row][col] == 'S') {
- rowSanta = row;
- colSanta = col;
- } else if (matrix[row][col] == 'V') {
- countNiceKids++;
- }
- }
- }
- String command = scanner.nextLine();
- while (presents > 0 && !command.equals("Christmas morning")) {
- switch (command) {
- case "up":
- matrix[rowSanta][colSanta] = '-';
- rowSanta--;
- if (!isInMatrix(rowSanta, colSanta, matrix)) {
- presents = 0;
- break;
- }
- if (matrix[rowSanta][colSanta] == 'X') {
- matrix[rowSanta][colSanta] = 'S';
- } else if (matrix[rowSanta][colSanta] == 'V') {
- presents--;
- presentsForNiceKids++;
- matrix[rowSanta][colSanta] = 'S';
- } else if (matrix[rowSanta][colSanta] == 'C') {
- matrix[rowSanta][colSanta] = 'S';
- if (matrix[rowSanta][colSanta - 1] == 'V') {
- matrix[rowSanta][colSanta - 1] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta][colSanta - 1] == 'X') {
- matrix[rowSanta][colSanta - 1] = '-';
- presents--;
- }
- if (matrix[rowSanta][colSanta + 1] == 'V' && presents > 0) {
- matrix[rowSanta][colSanta + 1] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta][colSanta + 1] == 'X' && presents > 0) {
- matrix[rowSanta][colSanta + 1] = '-';
- presents--;
- }
- if (matrix[rowSanta - 1][colSanta] == 'V' && presents > 0) {
- matrix[rowSanta - 1][colSanta] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta - 1][colSanta] == 'X' && presents > 0) {
- matrix[rowSanta - 1][colSanta] = '-';
- presents--;
- }
- if (matrix[rowSanta + 1][colSanta] == 'V' && presents > 0) {
- matrix[rowSanta + 1][colSanta] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta + 1][colSanta] == 'X' && presents > 0) {
- matrix[rowSanta + 1][colSanta] = '-';
- presents--;
- }
- }
- break;
- case "down":
- matrix[rowSanta][colSanta] = '-';
- rowSanta++;
- if (!isInMatrix(rowSanta, colSanta, matrix)) {
- presents = 0;
- break;
- }
- if (matrix[rowSanta][colSanta] == 'X') {
- matrix[rowSanta][colSanta] = 'S';
- } else if (matrix[rowSanta][colSanta] == 'V') {
- presents--;
- presentsForNiceKids++;
- matrix[rowSanta][colSanta] = 'S';
- } else if (matrix[rowSanta][colSanta] == 'C') {
- matrix[rowSanta][colSanta] = 'S';
- if (matrix[rowSanta][colSanta - 1] == 'V') {
- matrix[rowSanta][colSanta - 1] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta][colSanta - 1] == 'X') {
- matrix[rowSanta][colSanta - 1] = '-';
- presents--;
- }
- if (matrix[rowSanta][colSanta + 1] == 'V' && presents > 0) {
- matrix[rowSanta][colSanta + 1] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta][colSanta + 1] == 'X' && presents > 0) {
- matrix[rowSanta][colSanta + 1] = '-';
- presents--;
- }
- if (matrix[rowSanta - 1][colSanta] == 'V' && presents > 0) {
- matrix[rowSanta - 1][colSanta] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta - 1][colSanta] == 'X' && presents > 0) {
- matrix[rowSanta - 1][colSanta] = '-';
- presents--;
- }
- if (matrix[rowSanta + 1][colSanta] == 'V' && presents > 0) {
- matrix[rowSanta + 1][colSanta] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta + 1][colSanta] == 'X' && presents > 0) {
- matrix[rowSanta + 1][colSanta] = '-';
- presents--;
- }
- }
- break;
- case "left":
- matrix[rowSanta][colSanta] = '-';
- colSanta--;
- if (!isInMatrix(rowSanta, colSanta, matrix)) {
- presents = 0;
- break;
- }
- if (matrix[rowSanta][colSanta] == 'X') {
- matrix[rowSanta][colSanta] = 'S';
- } else if (matrix[rowSanta][colSanta] == 'V') {
- presents--;
- presentsForNiceKids++;
- matrix[rowSanta][colSanta] = 'S';
- } else if (matrix[rowSanta][colSanta] == 'C') {
- matrix[rowSanta][colSanta] = 'S';
- if (matrix[rowSanta][colSanta - 1] == 'V') {
- matrix[rowSanta][colSanta - 1] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta][colSanta - 1] == 'X') {
- matrix[rowSanta][colSanta - 1] = '-';
- presents--;
- }
- if (matrix[rowSanta][colSanta + 1] == 'V' && presents > 0) {
- matrix[rowSanta][colSanta + 1] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta][colSanta + 1] == 'X' && presents > 0) {
- matrix[rowSanta][colSanta + 1] = '-';
- presents--;
- }
- if (matrix[rowSanta - 1][colSanta] == 'V' && presents > 0) {
- matrix[rowSanta - 1][colSanta] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta - 1][colSanta] == 'X' && presents > 0) {
- matrix[rowSanta - 1][colSanta] = '-';
- presents--;
- }
- if (matrix[rowSanta + 1][colSanta] == 'V' && presents > 0) {
- matrix[rowSanta + 1][colSanta] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta + 1][colSanta] == 'X' && presents > 0) {
- matrix[rowSanta + 1][colSanta] = '-';
- presents--;
- }
- }
- break;
- case "right":
- matrix[rowSanta][colSanta] = '-';
- colSanta++;
- if (!isInMatrix(rowSanta, colSanta, matrix)) {
- presents = 0;
- break;
- }
- if (matrix[rowSanta][colSanta] == 'X') {
- matrix[rowSanta][colSanta] = 'S';
- } else if (matrix[rowSanta][colSanta] == 'V') {
- presents--;
- presentsForNiceKids++;
- matrix[rowSanta][colSanta] = 'S';
- } else if (matrix[rowSanta][colSanta] == 'C') {
- matrix[rowSanta][colSanta] = 'S';
- if (matrix[rowSanta][colSanta - 1] == 'V') {
- matrix[rowSanta][colSanta - 1] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta][colSanta - 1] == 'X') {
- matrix[rowSanta][colSanta - 1] = '-';
- presents--;
- }
- if (matrix[rowSanta][colSanta + 1] == 'V' && presents > 0) {
- matrix[rowSanta][colSanta + 1] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta][colSanta + 1] == 'X' && presents > 0) {
- matrix[rowSanta][colSanta + 1] = '-';
- presents--;
- }
- if (matrix[rowSanta - 1][colSanta] == 'V' && presents > 0) {
- matrix[rowSanta - 1][colSanta] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta - 1][colSanta] == 'X' && presents > 0) {
- matrix[rowSanta - 1][colSanta] = '-';
- presents--;
- }
- if (matrix[rowSanta + 1][colSanta] == 'V' && presents > 0) {
- matrix[rowSanta + 1][colSanta] = '-';
- presents--;
- presentsForNiceKids++;
- } else if (matrix[rowSanta + 1][colSanta] == 'X' && presents > 0) {
- matrix[rowSanta + 1][colSanta] = '-';
- presents--;
- }
- }
- break;
- }
- if (presents == 0) {
- System.out.println("Santa ran out of presents!");
- break;
- }
- command = scanner.nextLine();
- }
- printMatrix(matrix);
- if (countNiceKids == presentsForNiceKids) {
- System.out.printf("Good job, Santa! %d happy nice kid/s.", countNiceKids);
- } else {
- System.out.printf("No presents for %d nice kid/s.", countNiceKids - presentsForNiceKids);
- }
- }
- private static boolean isInMatrix(int row, int col, char[][] matrix) {
- if (row >= 0 && row < matrix.length && col >= 0 && col < matrix[row].length) {
- return true;
- }
- return false;
- }
- private static void printMatrix(char[][] matrix) {
- for (int row = 0; row < matrix.length; row++) {
- for (int col = 0; col < matrix[row].length; col++) {
- System.out.print(matrix[row][col] + " ");
- }
- System.out.println();
- }
- }
- }
Add Comment
Please, Sign In to add comment