ฉันทำงานที่ร้านเบเกอรี่ที่ให้บริการข้าวสาลีข้าวไรย์ข้าวบาร์เลย์ธัญพืชและขนมปังฝรั่งเศส แต่คนทำขนมปังแปลก ๆ เล็กน้อย - เขากองก้อนเรียงตามลำดับแบบสุ่มและบางครั้งก็ออกจากชั้นวางที่ว่าง
ในแต่ละวันลูกค้ารายเดิมเข้ามาและขอขนมปังหนึ่งก้อน แต่สิ่งที่ยุ่งยากก็คือเขาเป็น germophobe ดังนั้นเมื่อฉันเติมกระเป๋าของเขาฉันไม่สามารถนำก้อนจากชั้นวางติดกันสองชั้นในการเลือกต่อเนื่อง
ใช้เวลาหนึ่งวินาทีในการเดินระหว่างชั้นวางที่อยู่ติดกัน มันเป็นร้านยุ่ง สำหรับการกำหนดค่าแบบสุ่มใด ๆ ของก้อนฉันต้องการลดเวลาที่ใช้ในการรับหนึ่งในแต่ละก้อนที่ไม่ซ้ำกัน ฉันสามารถเริ่มต้นและสิ้นสุดที่ชั้นวางใดก็ได้
หากการสั่งซื้อของวันนี้เป็นW B W G F R Wเส้นทางที่เป็นไปได้0, 3, 5, 1, 4รวมเป็น 12 วินาที:abs(3-0) + abs(5-3) + abs(1-5) + abs(4-1) = 12
( 1, 2, 3, 4, 5ใช้งานไม่ได้เนื่องจากมีการหยิบขนมปังติดต่อกันจากชั้นวางที่อยู่ติดกัน)
หากB W B G B F B R B W B Fเป็นเส้นทางที่เป็นไปได้คือ1, 3, 5, 7, 10รวมเป็น 9 วินาที
ผู้จัดการมักจะทำให้แน่ใจว่ามีทางออกที่เป็นไปได้ดังนั้นฉันไม่ต้องกังวลเกี่ยวกับการจับอินพุทที่ไม่ดี เขามักจะส่งคำสั่งในไฟล์ แต่ถ้าฉันต้องการฉันสามารถพิมพ์ไปยัง STDIN หรืออ่านมันในวิธีที่แตกต่างกัน ฉันต้องการโปรแกรมที่จะพิมพ์ออกมาดัชนีของเส้นทางที่ดีที่สุดเช่นเดียวกับเวลาของตนตามค่าเริ่มต้นของ I / O กฎ
ในระยะสั้น:
- ขนมปัง 5 ประเภท
- คำสั่งแบบโลฟปรากฏขึ้นเป็นสตริงของคำสั่งแบบสุ่มและความยาว
- ต้องเลือกหนึ่งในแต่ละก้อนที่ไม่ซ้ำกัน
- ไม่สามารถทำการเลือกที่อยู่ติดกันติดกัน
- ลดระยะห่างระหว่างดัชนีการเลือก
- ไม่จำเป็นต้องกังวลเกี่ยวกับอินพุตที่ไม่ถูกต้อง
- ใช้กฎ I / O เริ่มต้น
นี่คือโค้ดกอล์ฟการนับจำนวนไบต์ที่สั้นที่สุดชนะ
'WBWG FRW'อินพุตที่ถูกต้องเช่นกันหรือไม่
0+3+5+1+4=13แต่ไม่ได้1+3+5+7+10=269