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/Eumerable
Пояснення коду: Створіть функцію з 2 змінних. Зберігайте x-1 та y-1 у змінних. Зберігайте максимум та мінімум цих змінних. Створіть вертикально низхідний діапазон чисел від (y-1) для рахунку y. Для кожного елемента у вертикальному діапазоні запишіть рядок для поточного елемента відповідно до складного предиката. Цей предикат створює висхідний діапазон цілих чисел від 0, для числа x. Для кожного елемента в цьому діапазоні об'єднайте в 1 рядок відповідно до складного предиката. Це предикат чеків, якщо внизу зліва, інакше перевіряє, якщо по діагоналі, інакше перевіряє, що ми на межі X або Y. Нарешті, все це було збережено у змінній. Тоді для отримання підрахунку ходу ми в основному просто підраховуємо #. Потім з'єднайте це зі збереженою змінною та поверніть результат
Це був ротовий ха-ха. На екрані екрана неправильний порядок обліку, тому що я знайшов спосіб зберегти 4 байти під час публікації
EDIT: Я бачу, що інші відповіді не містять "Move count:" у їх результатах, але моя є. Якщо це не вимога, це голить купу байтів ...