Javascript (harici kitaplık kullanarak) (235 bayt)
Tanrım bu zor oldu! Eh ... kütüphanem bu haha için gerçekten doğru bir görev değildi. Ama zorluğu sevdim
(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 bağlantısı: https://github.com/mvegh1/Enumerable
Kod açıklaması: 2 değişkenli fonksiyon oluşturun. Değişkenlere x-1 ve y-1 depolayın. Bunların maks ve min değerlerini değişkenlere kaydedin. Y sayısı için (y-1) 'den dikey olarak azalan bir sayı aralığı oluşturun. Dikey aralıktaki her öğe için, karmaşık yükleme göre geçerli öğe için bir satır yazın. Bu yüklem, x sayısı için 0'dan artan bir tamsayı aralığı oluşturur. Bu aralıktaki her öğe için karmaşık bir yükleme göre 1 dizeye birleştirin. Bu yüklem sol altta olup olmadığını kontrol eder, başka çaprazda olup olmadığını kontrol eder, aksi takdirde X veya Y sınırında olduğumuzu kontrol eder. Son olarak, bunların hepsi bir değişkende saklandı. Daha sonra hareket sayısını elde etmek için, temelde sadece # 'ları sayıyoruz. Sonra bunu depolanan değişkene birleştirin ve sonucu döndürün
Bu ağız doluydu haha. Ekran görüntüsünde yanlış bytecount var çünkü bunu gönderirken 4 bayt kaydetmenin bir yolunu buldum
DÜZENLEME: Diğer cevapların çıktılarına "Hareket sayısı:" koymadığını görüyorum, ama benimki. Bu bir gereklilik değilse, bir sürü bayt tıraş eder ...