Javascript (ใช้ไลบรารีภายนอก) (235 ไบต์)
Jeez นี่มันยาก! ดี ... ห้องสมุดของฉันไม่ใช่งานที่ถูกต้องสำหรับฮ่า ๆ ๆ แต่ฉันชอบความท้าทาย
(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 ไว้ในตัวแปร เก็บ max และ min ของเหล่านั้นลงในตัวแปร สร้างช่วงของตัวเลขจาก (y-1) ในแนวตั้งจากมากไปหาน้อยสำหรับ y สำหรับแต่ละองค์ประกอบในช่วงแนวตั้งให้เขียนบรรทัดสำหรับองค์ประกอบปัจจุบันตามเพรดิเคตที่ซับซ้อน เพรดิเคตนั้นสร้างช่วงจำนวนเต็มจาก 0 ขึ้นไปสำหรับนับ x สำหรับแต่ละองค์ประกอบในช่วงดังกล่าวให้ต่อกันเป็น 1 สตริงตามเพรดิเคตที่ซับซ้อน เพรดิเคตนั้นตรวจสอบว่าที่มุมล่างซ้ายหรือไม่ตรวจสอบอีกว่าในแนวทแยงมุมตรวจสอบอีกครั้งว่าเราอยู่ที่ขอบ X หรือ Y ในที่สุดทั้งหมดนั้นถูกเก็บไว้ในตัวแปร จากนั้นเพื่อให้นับการเคลื่อนไหวเราเพียงแค่นับจำนวน # จากนั้นเชื่อมต่อกับตัวแปรที่เก็บไว้และส่งคืนผลลัพธ์
นั่นคือคำหนึ่งฮ่าฮ่า ภาพหน้าจอมีจำนวนไบต์ผิดเนื่องจากฉันพบวิธีบันทึก 4 ไบต์ในขณะที่โพสต์สิ่งนี้
แก้ไข: ฉันเห็นคำตอบอื่น ๆ ที่ไม่ได้ใส่ "ย้ายนับ:" ในการส่งออกของพวกเขา แต่ฉันเป็น หากนั่นไม่ใช่ความต้องการนั่นจะทำให้เป็นจำนวนไบต์ ...