Javascript (с использованием внешней библиотеки) (235 байт)
Боже, это было сложно! Ну ... моя библиотека не совсем подходила для этого ха-ха. Но мне понравился вызов
(x,y)=>{r=x-1;s=y-1;m=Math.max(r,s);n=Math.min(r,s);l=_.RangeDown(s,y).WriteLine(z=>_.Range(0,x).Write("",w=>z==0&&w==0?"X":(z==w||(z==s&&w>=n)||(w==r&&z>=n))?"#":"."));return l+"\r\nMove count: "+(l.length-l.split("#").join("").length)}
Ссылка на lib: https://github.com/mvegh1/Enumerable
Объяснение кода: Создать функцию из 2 переменных. Храните x-1 и y-1 в переменных. Сохраните максимальное и минимальное значения этих переменных. Создайте вертикально нисходящий диапазон чисел из (y-1) для отсчета y. Для каждого элемента в вертикальном диапазоне напишите строку для текущего элемента в соответствии со сложным предикатом. Этот предикат создает возрастающий диапазон целых чисел от 0 для отсчета x. Для каждого элемента в этом диапазоне объединить в 1 строку в соответствии со сложным предикатом. Этот предикат проверяет, если внизу слева, иначе проверяет, если по диагонали, иначе проверяет, что мы на границе X или Y. Наконец, все это было сохранено в переменной. Затем, чтобы получить количество ходов, мы просто посчитаем #. Затем объедините это с хранимой переменной и верните результат
Это был полный рот, ха-ха. На скриншоте указан неправильный счетчик байтов, потому что я нашел способ сохранить 4 байта при публикации
РЕДАКТИРОВАТЬ: я вижу, что другие ответы не помещают «Счетчик ходов» в их вывод, но мой есть. Если это не является обязательным требованием, это сбивает кучу байтов ...