М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
demon998
demon998
14.05.2020 08:18 •  Информатика

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

👇
Ответ:
alsumamadaliev
alsumamadaliev
14.05.2020

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.

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


5) Шахматная ладья ходит по горизонтали или вертикали. Даны две различные клетки шахматной доски, оп
4,7(13 оценок)
Открыть все ответы
Ответ:
gulnazira2005
gulnazira2005
14.05.2020
# Код на ruby 2.2.3p173
def zadanie(line, time)
    line = line.gsub(/[^MD]/, "")
    time.times { |i|
        k = 0
        while k < line.size - 1 do
            if line[k..k + 1] == "MD"
                line[k], line[k + 1] = line[k + 1], line[k]
                k+=1
            end
            k+=1
        end
        p [i+1,line]
    }
    return line
end
# # Примеры применения
p zadanie("MDDDMMDMDDDDDM", 10)
# p zadanie("MMDMMMDDDMDDDMD", 10)
# p zadanie("MMMDMM", 5)

Вывод
[1, "DMDDMDMDMDDDMDM"]
[2, "DDMDDMDMDMDDMDMM"]
[3, "DDDMDDMDMDDMDMMM"]
[4, "MDDMDDMD"]
[5, "MDDDMD"]
[6, "MDMMMDMD"]
[7, "MMMDMD"]
[8, "MMDMD"]
[9, "MDMD"]
[10, "MD"]
"MD"
4,5(67 оценок)
Ответ:
PANDAnumber
PANDAnumber
14.05.2020

10

Объяснение:

Смотри вложение. Клетки: [B], [S] робот пройдёт более 2-х раз -> эти клетки не подойдут под условие. Почему? Потому что каждый цикл робот смещается на 3 клетки влево – через [B], в каждом цикле, робот уже проходит 2 раза, а в следующем цикле он делает это ещё раз, тем самым проваливая условие для данной клетки; [S] – аналогично, поскольку робот, в каждом цикле, пересечёт данную клетку, выходя из клетки [F] в клетку [G].

Для простоты, приведу список клеток из 2 цикла:

[G] станет [S];

[A] станет [B];

[C] станет [D];

[B] станет [E];

[S] станет [F].

Во втором цикле [G] левее на 3 клетки, а её позицию из 1 цикла, теперь, занимает клетка [S].

Нетрудно понять, что ровно 2 раза робот пройдёт только по клетке [C] – [C] станет [D] и больше не будет пройдена роботом.

Остальные клетки робот пройдёт более или менее 2 раз.


Робот движется по клетчатому полю в соответствии с заданной программой. для записи программы использ
4,4(7 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ