JavaScript (przy użyciu zewnętrznej biblioteki) (235 bajtów)
Jezu, to było trudne! Cóż ... moja biblioteka nie była właściwie właściwym zadaniem dla tego haha. Ale podobało mi się wyzwanie
(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)}
Link do lib: https://github.com/mvegh1/Enumerable
Objaśnienie kodu: Utwórz funkcję 2 zmiennych. Przechowuj x-1 i y-1 w zmiennych. Przechowuj maks. I min tych wartości w zmiennych. Utwórz pionowo malejący zakres liczb od (y-1) dla liczby y. Dla każdego elementu w zakresie pionowym napisz linię dla bieżącego elementu, zgodnie ze predykatem złożonym. Predykat tworzy rosnący zakres liczb całkowitych od 0, dla liczby x. Dla każdego elementu w tym zakresie należy połączyć w 1 łańcuch zgodnie ze złożonym predykatem. Ten predykat sprawdza, czy u dołu po lewej stronie, czy sprawdza, czy na przekątnej, w przeciwnym razie sprawdza, czy jesteśmy na granicy X lub Y. Wreszcie wszystko to zostało zapisane w zmiennej. Następnie, aby uzyskać liczbę ruchów, po prostu liczymy #. Następnie połącz to z przechowywaną zmienną i zwróć wynik
To była kęs haha. Zrzut ekranu ma niepoprawną liczbę bajtów, ponieważ podczas publikowania znalazłem sposób na zaoszczędzenie 4 bajtów
EDYCJA: Widzę, że inne odpowiedzi nie umieszczają w swoich wynikach „Liczba ruchów:”, ale moja jest. Jeśli nie jest to wymagane, goli się kilka bajtów ...