พื้นหลัง
Nonogramหรือที่เรียกว่า Picross หรือ Griddlers เป็นปริศนาที่มีวัตถุประสงค์เพื่อตรวจสอบว่าแต่ละเซลล์ในตาราง 2D ควรมีสีหรือเว้นว่างไว้โดยใช้หมายเลขของเซลล์สีที่ต่อเนื่องกันในแต่ละบรรทัด
ต่อไปนี้เป็นตัวอย่างปริศนา Nonogram พร้อมโซลูชัน
ปัญหาคือเกม Nonogram เชิงพาณิชย์ / แอพมือถือบางส่วนมีปริศนาที่ไม่สามารถแก้ไขได้ด้วยมือ (เช่นมีวิธีแก้ปัญหาหลายอย่างหรือต้องใช้การย้อนรอยลึก) แต่พวกเขายังมีชีวิตบางอย่างที่จะเป็นผู้เล่นที่ชีวิตหนึ่งจะหายไปเมื่อคุณพยายามที่จะสีของเซลล์ที่มีคำตอบที่ถูกต้องคือว่างเปล่า ดังนั้นถึงเวลาที่จะบังคับให้ "ปริศนา" ที่น่ารังเกียจ!
เพื่อให้งานง่ายขึ้นลองจินตนาการถึงหนึ่งบรรทัดด้วยเงื่อนงำและไม่มีอะไรอื่น:
3 7 | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
The [3,7]
clues และความยาวบรรทัดคือ 15 เซลล์ เนื่องจากมันมีวิธีแก้ปัญหาที่เป็นไปได้หลายอย่างเราจึงต้องเสี่ยงชีวิตเพื่อที่จะแก้ปัญหานี้ได้อย่างเต็มที่ (เช่นกำหนดเซลล์สีทั้งหมด)
ท้าทาย
กำหนดบรรทัดคำใบ้ (รายการจำนวนเต็มบวก) และความยาวบรรทัดค้นหาจำนวนสูงสุดของชีวิตที่คุณจะสูญเสียโดยสมมติว่าคุณกำลังบังคับใช้กลยุทธ์ที่ดีที่สุด
โปรดทราบว่าคุณคาดเดาเซลล์ที่มีสีเสมอ ในเกมจริงการคาดเดาเซลล์ว่างเปล่า (ไม่ว่าจะถูกหรือผิด) ไม่มีผลต่อชีวิตของคุณดังนั้นคุณจึงไม่สามารถ "ไขปริศนา" ได้
นอกจากนี้คุณยังสามารถสันนิษฐานได้ว่าการป้อนข้อมูลที่ถูกต้องเสมอหมายถึงบรรทัด nonogram [6], 5
ดังนั้นคุณจึงไม่จำเป็นต้องกังวลเกี่ยวกับสิ่งที่ชอบ
คำอธิบาย
ลองดูตัวอย่างที่ง่ายกว่าก่อน
[1,2], 5
มีความเป็นไปได้สามประการสำหรับบรรทัดนี้ ( O
เป็นเซลล์ที่มีสี.
เป็นหนึ่งที่ว่างเปล่า):
O . O O .
O . . O O
. O . O O
หากเราลองระบายสีเซลล์ 0 (ดัชนี 0 จากซ้าย) จะเกิดสิ่งใดสิ่งหนึ่งต่อไปนี้:
- เซลล์มีสีถูกต้อง ตอนนี้เรามีความเป็นไปได้สองอย่างและเราสามารถเลือกระหว่างเซลล์ 2 กับเซลล์ 4 เพื่อแก้ปัญหาได้อย่างเต็มที่ ทั้งสองกรณีเราจะสูญเสียหนึ่งชีวิตในกรณีที่เลวร้ายที่สุด
- เซลล์ว่างเปล่าและเราสูญเสียชีวิต ในกรณีนี้เราได้ระบุวิธีการแก้ปัญหาที่ไม่ซ้ำกับสายนี้แล้วดังนั้นเราจึงทำไปด้วย 1 ชีวิตที่หายไป
ดังนั้นคำตอบ[1,2], 5
คือ 1
[5], 10
ค้นหาไบนารี่? Nope
ตัวเลือกแรกที่ชัดเจนที่สุดคือ 4 หรือ 5 ซึ่งจะเปิดเผยความเป็นไปได้หนึ่งอย่างถ้าว่างเปล่า (มีค่าเท่ากับ 1 ชีวิต) สมมติว่าเราเลือก 4 ก่อน หากเซลล์ 4 มีสีจริงเราขยายไปทางซ้ายคือลอง 3, 2, 1 และ 0 จนกว่าชีวิตจะหายไป (หรือเซลล์ 0 เป็นสีแล้วเราจะไม่เสียชีวิตเลย) เมื่อใดก็ตามที่ชีวิตหายไปเราสามารถกำหนดวิธีการแก้ปัญหาที่ไม่ซ้ำกันเช่นถ้าเราเห็นสิ่งนี้:
_ _ X O O _ _ _ _ _
จากนั้นเราก็รู้แล้วว่าคำตอบคือ:
. . . O O O O O . .
ดังนั้นคำตอบ[5], 10
ก็คือ 1
[3,7], 15
เริ่มต้นด้วยเซลล์ 11 ซึ่งหากว่างเปล่าจะเปิดเผยโซลูชันต่อไปนี้ทันที
O O O . O O O O O O O X . . .
จากนั้นลอง 12 ซึ่งถ้าว่างเปล่าให้สองความเป็นไปได้ซึ่งสามารถแก้ไขได้โดยเสียค่าใช้จ่าย 1 ชีวิตเพิ่มเติม
O O O . . O O O O O O O X . .
. O O O . O O O O O O O X . .
ตอนนี้ลอง 2 ถ้าว่างเปล่ามันจะนำไปสู่ความเป็นไปได้สามอย่างที่สามารถแก้ไขได้เช่นเดียวกับ[1,2], 5
ตัวอย่าง
. . X O O O . O O O O O O O .
. . X O O O . . O O O O O O O
. . X . O O O . O O O O O O O
หากคุณลดความเสี่ยงให้น้อยที่สุดในลักษณะนี้คุณสามารถเข้าถึงโซลูชันได้สูงสุด 2 ชีวิตใช้เวลา
กรณีทดสอบ
[1,2] 5 => 1
[2] 5 => 2
[1] 5 => 4
[] 5 => 0
[5] 10 => 1
[2,1,5] 10 => 0
[2,4] 10 => 2
[6] 15 => 2
[5] 15 => 2
[4] 15 => 3
[3,7] 15 => 2
[3,4] 15 => 3
[2,2,4] 15 => 4
[1,1,1,1,1,1,1] 15 => 2
[2,1,1,3,1] 15 => 3
[1,1,1,2,1] 15 => 5
สำหรับสองกรณีสุดท้ายกลยุทธ์ที่ดีที่สุดจะไม่ผ่านช่องว่างขั้นต่ำ แต่เพียงจากซ้ายไปขวา (หรือจากขวาไปซ้าย) ขอบคุณ @crashoz ที่ชี้ให้เห็น
กฎระเบียบ
ใช้กฎมาตรฐานของกอล์ฟ การส่งที่ถูกต้องสั้นที่สุดในหน่วยไบต์ชนะ
เงินรางวัล
หากมีคนคิดอัลกอริธึมเวลาพหุนาม (พร้อมหลักฐานการพิสูจน์ความถูกต้อง) ฉันจะมอบรางวัลให้กับโซลูชั่นดังกล่าวจำนวน +100
[6], 5
อะไร?