แก้ไข:ฉันจะมอบรางวัล100 ชื่อเสียงให้แก่นักแก้ปัญหาตัวแรกของปริศนาโบนัสเมื่อสิ้นสุดคำถาม!
ฉันจะเพิ่มเงินรางวัลให้กับคำถามก็ต่อเมื่อคำตอบปรากฏขึ้นเนื่องจากเงินรางวัลนี้ไม่มีกำหนดเวลา
เนื่องจากรายการจำนวนเต็มบวกหนึ่งหลักที่ไม่ลดลงคุณควรพิจารณาว่าการขุดลึกลงไปถึงตัวเลขนั้นจะขุดได้อย่างไร
███ ███ A dungeon with 5 blocks removed and a depth of 3.
███ ███
███ ████
████████
ก่อนที่จะเริ่มการขุดพื้นเป็นระดับ
ทุกหลักสามารถลบดินหนึ่งบล็อกออกจากด้านล่างของตัวมันเองได้ แต่มันต้องไปถึงตำแหน่งนั้นจากนอกดันเจี้ยน ในขณะที่ทำเช่นนั้นตัวเลขไม่สามารถลงหรือขึ้นไปมากกว่าค่าตัวเลขในขั้นตอนแนวนอนใด ๆ
ตัวเลขใช้กลยุทธ์ต่อไปนี้สำหรับการขุด:
- ตัวเลขที่มีค่าขุดน้อยที่สุดเป็นอันดับแรกและหลังจากนั้นตัวขุดถัดไปจะเป็นค่าที่เล็กที่สุดถัดไปจากส่วนที่เหลือของตัวเลข
- ตัวเลขตัวแรกสามารถขุดได้ทุกตำแหน่ง (พื้นทั้งหมดเหมือนกัน)
- ตัวเลขต่อไปนี้จะขุดที่คอลัมน์เริ่มต้นด้านซ้ายสุดที่พวกเขาสามารถออกมาได้ หากไม่มีคอลัมน์ดังกล่าวพวกเขาจะเริ่มขุดคอลัมน์ใหม่ทางด้านขวาของคอลัมน์ขวาสุด
ตัวอย่างเช่นตัวเลขที่1 1 1 2 3 3
จะขุดดันเจี้ยนต่อไปนี้ (การสร้างภาพข้อมูลทีละขั้นตอนด้วยตัวเลขที่ทำเครื่องหมายชนิดของตัวเลขที่ขุดออกจากตำแหน่งนั้น):
███1████ ███11███ ███11███ ███11███ ███11███ ███11███
████████ ████████ ███1████ ███1████ ███1████ ███13███
████████ ████████ ████████ ███2████ ███2████ ███2████
████████ ████████ ████████ ████████ ███3████ ███3████
████████ ████████ ████████ ████████ ████████ ████████
คำอธิบายสำหรับตัวอย่าง:
- อันที่สอง
1
ไม่สามารถปีนออกจากคอลัมน์ที่มีอยู่ได้หากมันจะทำให้ลึกลงไปถึง2
-deep ดังนั้นมันจึงขุดลงไปทางขวา - ที่สาม
1
สามารถขุดในคอลัมน์ซ้ายสุดสร้างคอลัมน์2
-deep ตามที่สามารถย้ายออกไปยัง1
คอลัมน์ -deep แล้วไปที่ระดับพื้นดิน - ถัดไป
2
และ3
ทั้งคู่สามารถขุดในคอลัมน์ซ้ายสุด - คนสุดท้าย
3
ไม่สามารถขุดในคอลัมน์ซ้ายสุด แต่ทำได้ในคอลัมน์ถัดไป
อินพุต
- รายการที่ไม่ลดลงของจำนวนเต็มหนึ่งหลักบวกที่มีองค์ประกอบอย่างน้อยหนึ่ง
เอาท์พุต
- จำนวนเต็มบวกเดียวคือความลึกของดันเจี้ยนที่สร้าง
ตัวอย่าง
อินพุต => เอาต์พุต (ด้วยความลึกของคอลัมน์ของดันเจี้ยนจากซ้ายไปขวาตามคำอธิบายที่ไม่ได้เป็นส่วนหนึ่งของเอาต์พุต)
[3] => 1
(column depths are [1])
[1, 1, 1, 2, 3, 3] => 4
(column depths are [4, 2])
[1, 1, 1, 1, 1, 1, 1, 1] => 3
(column depths are [3, 2, 2, 1])
[1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5] => 11
(column depths are [11, 6, 2])
[1, 1, 1, 1, 1, 2, 2, 9, 9, 9] => 7
(column depths are [7, 2, 1])
[2, 2, 2, 2, 2, 5, 5, 5, 7, 7, 9] => 9
(column depths are [9, 2])
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] => 10
(column depths are [10, 5])
[1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 7, 7, 9] => 13
(column depths are [13, 5])
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9] => 13
(column depths are [13, 5])
[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9] => 21
(column depths are [21, 12, 3])
นี่คือรหัสกอล์ฟเพื่อให้รายการที่สั้นที่สุดชนะ
ปริศนาโบนัส
คุณสามารถพิสูจน์ (หรือหักล้าง) ว่ากลยุทธ์ที่อธิบายไว้ในส่วน"ตัวเลขใช้กลยุทธ์การขุดต่อไปนี้"จะให้ดันเจี้ยนที่ลึกที่สุดสำหรับตัวเลขที่กำหนดหรือไม่