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

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

Ответ:
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.
Не забывайте нажать "Спасибо", поставить оценку, и если ответ удовлетворил, то выберите его как "Лучший" :)




Конечно, вот пример решения данной задачи на Java:
javaimport 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 и выполнить его, чтобы убедиться, что он работает как ожидается.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili