Javascript (utilizzando una libreria esterna) (235 byte)
Accidenti, è stato difficile! Beh ... la mia biblioteca non era davvero il compito giusto per questo haha. Ma mi è piaciuta la sfida
(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 alla lib: https://github.com/mvegh1/Enumerable
Spiegazione del codice: creare una funzione di 2 variabili. Conservare x-1 e y-1 in variabili. Memorizza il massimo e il minimo di quelli in variabili. Crea un intervallo di numeri decrescente verticalmente da (y-1) per un conteggio di y. Per ciascun elemento nell'intervallo verticale, scrivere una riga per l'elemento corrente, in base al predicato complesso. Tale predicato crea un intervallo crescente di numeri interi da 0, per un conteggio di x. Per ogni elemento in quell'intervallo, concatenare in 1 stringa in base a un predicato complesso. Quel predicato controlla se in basso a sinistra, altrimenti controlla se in diagonale, altrimenti controlla che siamo sul bordo X o Y. Alla fine, tutto ciò è stato archiviato in una variabile. Quindi per ottenere il conteggio delle mosse, in pratica contiamo solo i #. Quindi concatenarlo nella variabile memorizzata e restituire il risultato
Quello è stato un boccone ahah. Lo screenshot ha un byte errato perché ho trovato un modo per salvare 4 byte durante la pubblicazione
EDIT: vedo che altre risposte non stanno inserendo "Move count:" nel loro output, ma il mio lo è. Se questo non è un requisito, ciò rade un mucchio di byte ...