Вопрос задан 05.07.2023 в 01:41. Предмет Информатика. Спрашивает Ярый Денис.

5) Шахматная ладья ходит по горизонтали или вертикали. Даны две различные клетки шахматной доски,

определите, может ли ладья попасть с первой клетки на вторую одним ходом. Формат входных данных Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Формат выходных данных Программа должна вывести YES, если из первой клетки ходом ладьи можно попасть во вторую или NO в противном случае. Sample Input: 4 4 5 5 Sample Output: NO НАПИШИТЕ В JAVA, Пожалуйста
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Прядко София.

Ответ:

public class MyClass {

   public static void main(String args[]) {

       System.out.println("4, 4, 5, 5 == " + isValidMove(4, 4, 5, 5));

       System.out.println("4, 4, 4, 7 == " + isValidMove(4, 4, 4, 7));

   }

   

   public static boolean isValidMove(int fromRow, int fromCol, int toRow, int toCol) {

       int i;

   

       // Попытка двинуться в то место где фигура уже стоит

       if (fromRow == toRow && fromCol == toCol)

           return false;

   

       // Collision detection

       if (fromRow == toRow) {

           // горизонтальное движение

           if (fromCol < toCol) {

               // вправо

               for (i = fromCol + 1; i <= toCol; ++i)

                   if (!isValidPosition(fromRow, i))

                       return false;

           } else {

               // влево

               for (i = fromCol - 1; i >= toCol; --i)

                   if (!isValidPosition(fromRow, i))

                       return false;

           }

       } else if (fromCol == toCol) {

           // вертикальное движение

           if (fromRow < toRow) {

               // движение вниз

               for (i = fromRow + 1; i <= toRow; ++i)

                   if (!isValidPosition(i, fromCol))

                       return false;

           } else {

               // движение вверх

               for (i = fromRow - 1; i >= toRow; --i)

                   if (!isValidPosition(i, fromCol))

                       return false;

           }

       } else {

           // не валидное движение

           return false;

       }

   

       return true;

   }

   

   public static boolean isValidPosition(int row, int col) {

       boolean result = false;

       if (row > 0 && row < 7) {

           result = true;

       }

       

       if (col > 0 && col < 7) {

           result = true;

       }

       

       return result;

   }

}

P.S.

Не забывайте нажать "Спасибо", поставить оценку, и если ответ удовлетворил, то выберите его как "Лучший" :)


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, вот пример решения данной задачи на Java:

java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int x1 = scanner.nextInt(); // Номер столбца первой клетки int y1 = scanner.nextInt(); // Номер строки первой клетки int x2 = scanner.nextInt(); // Номер столбца второй клетки int y2 = scanner.nextInt(); // Номер строки второй клетки // Проверяем, можно ли ладье попасть с первой клетки на вторую по горизонтали или вертикали if (x1 == x2 || y1 == y2) { System.out.println("YES"); } else { System.out.println("NO"); } } }

Вы можете скопировать этот код в среду разработки Java и выполнить его, чтобы убедиться, что он работает как ожидается.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос