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