สถานการณ์
หลังจากทำงานเป็นเวลานานทั้งวันในสำนักงานและท่องดูstackexchange.comในที่สุดฉันก็เดินออกจากประตูเวลา 16:58 น. เหนื่อยกับวันนั้น เนื่องจากฉันยังเป็นเพียงผู้ฝึกงานโหมดการขนส่งปัจจุบันของฉันจึงเป็นจักรยาน ฉันตรงไปที่Peugeot Reynolds 501 ที่ไว้ใจได้ของฉันแต่ก่อนที่ฉันจะแล่นเรือไปได้ฉันต้องปลดล็อคก่อน ตัวล็อคเป็นรหัสล็อคสี่หลักมาตรฐาน (0-9) ผ่านทางกรอบและล้อหน้า ขณะที่ฉันพยายามตื่นตัวอยู่ฉันก็ดึงมือขึ้นเพื่อเข้าร่วม
ความท้าทาย
เนื่องจากนิ้วของฉันอ่อนล้าฉันต้องการเปลี่ยนการล็อคให้เป็นการผสมผสานที่ถูกต้องกับการเคลื่อนไหวที่น้อยที่สุด หนึ่งการเคลื่อนไหวถูกกำหนดให้เป็นหมุนโดยหนึ่งตำแหน่ง (36 องศา) ตัวอย่างเช่นมีการเคลื่อนไหวจากการ5737
5738
อย่างไรก็ตามฉันสามารถที่จะจับได้ถึงสามวงติดต่อกันในเวลาเดียวกันและหมุนพวกเขาเป็นวงเดียวซึ่งนับเป็นการเคลื่อนไหวเพียงครั้งเดียวเท่านั้น ตัวอย่างนอกจากนี้ยังมีเพียงหนึ่งการเคลื่อนไหวจาก5737
ไปหรือ6837
5626
การย้ายจาก5737
ไปยัง6838
ไม่ใช่หนึ่งการเคลื่อนไหวเนื่องจากตัวเลข 1,2 และ 4 เคลื่อนไปในทิศทางเดียวกัน แต่เป็นอิสระจากตัวเลข 3
ดังนั้นสำหรับชุดค่าผสมที่กำหนดฉันสามารถเห็นได้บนล็อคจักรยาน (จำนวนเต็ม 4 หลักใด ๆ ) อะไรคือจำนวนการเคลื่อนไหวที่ต่ำที่สุดที่ฉันสามารถทำได้เพื่อปลดล็อคและใช่ฉันสามารถหมุนในทิศทางใดก็ได้ ด้วยวิธีนี้ฉันหมายความว่าฉันสามารถเปลี่ยนตัวเลขบางอย่างในทิศทางเดียวและตัวเลขอื่น ๆ ในทิศทางอื่น: การเคลื่อนไหวของฉันทั้งหมดไม่ได้เป็นแบบเข็มหรือตามเข็มนาฬิกาสำหรับการปลดล็อคแต่ละครั้ง
เพราะฉันขี้เกียจรหัสปลดล็อคของฉันคือ 0000
นี่คือรหัสกอล์ฟฉันไม่สามารถเขียนรหัสได้มากนักดังนั้นโปรแกรมที่สั้นที่สุดในจำนวนไบต์ชนะ
ข้อมูลมาจาก stdin และรหัสของคุณควรส่งออกชุดค่าผสมที่ฉันเห็นในแต่ละขั้นตอนหลังจากการเคลื่อนไหวแต่ละครั้งรวมถึง 0000 ที่สิ้นสุด เอาต์พุตชุดค่าผสมแต่ละชุดควรคั่นด้วยช่องว่าง / newline / comma / period / ampersand
ตัวอย่าง
Input: 1210
0100
0000
Input: 9871
9870
0980
0090
0000
Input: 5555
4445&3335&2225&1115&0005&0006&0007&0008&0009&0000
Input: 1234
0124 0013 0002 0001 0000
ฉันลองโพสต์สิ่งนี้บนhttp://bicycles.stackexchange.comแต่พวกเขาไม่ชอบ ...
คำเตือน: กอล์ฟครั้งแรกดังนั้นสิ่งใดที่ขาด / ข้อมูลที่ขาดหายไปใด ๆ แจ้งให้เราทราบ! นอกจากนี้ฉันทำตัวอย่างทั้งหมดด้วยมือดังนั้นอาจมีวิธีแก้ปัญหาที่เกี่ยวข้องกับการเคลื่อนไหวน้อยลง!
แก้ไข: สำหรับคำตอบที่มีเส้นทางการแก้ปัญหาหลายเส้นทางที่มีจำนวนการเคลื่อนไหวเท่ากัน (ในทางปฏิบัติทั้งหมด) ไม่มีคำตอบที่ต้องการ