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/Enumerable
コードの説明:2つの変数の関数を作成します。x-1とy-1を変数に保存します。それらの最大値と最小値を変数に格納します。yのカウントに対して、(y-1)から数値の垂直に下降する範囲を作成します。垂直範囲の各要素について、複雑な述語に従って、現在の要素の行を記述します。この述部は、xのカウントに対して、0からの整数の昇順範囲を作成します。その範囲内の各要素について、複雑な述語に従って1つの文字列に連結します。この述部は、左下にあるかどうかをチェックし、そうでない場合は対角線にあるかどうかをチェックし、そうでない場合はXまたはY境界にあるかどうかをチェックします。最後に、そのすべてが変数に格納されました。次に、移動カウントを取得するには、基本的に#をカウントします。次に、それを保存された変数に連結し、結果を返します
それは口いっぱいの笑でした。この投稿中に4バイトを節約する方法を見つけたため、スクリーンショットのバイトカウントが間違っています
編集:私は他の答えは彼らの出力に「移動カウント:」を入れていないと思いますが、私はそうです。それが要件ではない場合、それはバイトの束を削る...