Задача
В шахматном иннокоролевстве выводят специальные породы инноконей. Порода инноконя задается парой чисел $(x, y), 0 ≤ x ≤ y$. Инноконь перемещается следующим образом: сначала перемещается на $x$ клеток в одну из четырех сторон, затем поворачивает на 90 градусов влево или вправо и перемещается еще на $y$ клеток. Например, обычный шахматный конь — это инноконь породы (1, 2).
Петя и Вася недавно видели инноконя, он прыгнул с поля $A$ на поле $B$. Пете и Васе стало интересно, какой породы был этот инноконь. Помогите им ответить на этот вопрос.
Входные данные
Шахматная доска состоит из 8 строк и 8 столбцов. Строки нумеруются числами от 1 до 8, а столбцы буквами от $a$ до $h$. Таким образом, каждое поле задается парой из буквы и цифры. В двух строках ввода содержатся описания полей $A$ и $B$.
Выходные данные
Выведите два целых числа $x$ и $y$, $(0 ≤ x ≤ y)$, соответствующие породе данного инноконя.
Тесты
Входные данные | Выходные данные |
a1 b3 | 1 2 |
g5 d3 | 2 3 |
e1 e1 | 0 0 |
d3 d7 | 0 4 |
a2 c2 | 0 2 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <cmath> using namespace std; int main() { char f1, f2; int s1, s2, x, y; cin >> f1>> s1; cin >> f2 >> s2; x = abs(f1 - f2); y = abs(s1 - s2); cout << min(x, y) << ' ' << max(x, y); return 0; } |
Решение
Найдем разницы пройденных расстояний по строкам и столбцам. Тогда породой данного инноконя будет пара этих чисел, размещенных по возрастанию.
Не пойму к чему эти два массива, ты ведь их нигде не используешь.
Да и куча if’ов лишняя — блоком последнего else можно заменить всё ветвление, разница одинаковых чисел и так будет равно нулю.
Кстати, вместо tmp1 и tmp2 можно сразу записывать x = abs(f1 - f2), char’ы автоматически преобразуются в ASCII-код.
И убери кириллицу из ссылки на задачу.
Да, что-то я и правда код слишком усложнила. Спасибо, исправила.