Javascript (à l'aide d'une bibliothèque externe) (235 octets)
Bon sang c'était dur! Eh bien ... ma bibliothèque n'était pas vraiment la bonne tâche pour ce haha. Mais j'ai aimé le défi
(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)}
Lien vers la bibliothèque: https://github.com/mvegh1/Enumerable
Explication du code: créer une fonction de 2 variables. Stockez x-1 et y-1 dans des variables. Stockez max et min de ceux-ci dans des variables. Créez une plage de nombres descendant verticalement à partir de (y-1) pour un nombre de y. Pour chaque élément de la plage verticale, écrivez une ligne pour l'élément actuel, en fonction du prédicat complexe. Ce prédicat crée une plage ascendante d'entiers de 0, pour un nombre de x. Pour chaque élément de cette plage, concaténez en 1 chaîne selon un prédicat complexe. Ce prédicat vérifie s'il est en bas à gauche, sinon vérifie s'il est en diagonale, sinon vérifie que nous sommes à la frontière X ou Y. Enfin, tout cela a été stocké dans une variable. Ensuite, pour obtenir le nombre de mouvements, nous comptons simplement les #. Concaténer ensuite cela à la variable stockée et renvoyer le résultat
C'était une bouchée haha. La capture d'écran a le mauvais octet parce que j'ai trouvé un moyen d'économiser 4 octets en publiant ce
EDIT: Je vois que d'autres réponses ne mettent pas "Move count:" dans leur sortie, mais la mienne l'est. Si ce n'est pas une exigence, cela rase un tas d'octets ...
