Javascript (mit externer Bibliothek) (235 Bytes)
Meine Güte, das war schwer! Nun ... meine Bibliothek war nicht wirklich die richtige Aufgabe für dieses Haha. Aber ich mochte die Herausforderung
(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 zu lib: https://github.com/mvegh1/Enumerable
Codeerklärung: Funktion aus 2 Variablen erstellen. Speichern Sie x-1 und y-1 in Variablen. Speichere max und min davon in Variablen. Erstellen Sie einen vertikal absteigenden Zahlenbereich von (y-1) für eine Anzahl von y. Schreiben Sie für jedes Element im vertikalen Bereich eine Linie für das aktuelle Element entsprechend dem komplexen Prädikat. Dieses Prädikat erstellt einen aufsteigenden Bereich von ganzen Zahlen von 0 für eine Anzahl von x. Verketten Sie für jedes Element in diesem Bereich eine Zeichenfolge gemäß einem komplexen Prädikat. Dieses Prädikat prüft, ob links unten, sonst, ob diagonal, sonst, ob wir am X- oder Y-Rand sind. Schließlich wurde alles in einer Variablen gespeichert. Um die Anzahl der Züge zu ermitteln, zählen wir im Grunde genommen nur die # -Zahlen. Verknüpfen Sie das dann mit der gespeicherten Variablen und geben Sie das Ergebnis zurück
Das war ein Schluck haha. Der Screenshot hat den falschen Bytecount, weil ich beim Posten einen Weg gefunden habe, 4 Bytes zu sparen
BEARBEITEN: Ich sehe, dass andere Antworten nicht "Move count:" in ihre Ausgabe einfügen, aber meine ist. Wenn das keine Voraussetzung ist, werden ein paar Bytes gespart ...