แทนที่จะเป็นนักรบฝีมือดีที่สามารถสังหารHydras (ดูที่นี่และที่นี่ ) คราวนี้คุณเป็นนักรบที่ไม่มีความรู้มาก่อนเกี่ยวกับวิธีฆ่าหนึ่งหรืออาวุธที่จะใช้กับสัตว์ร้าย
ในปัญหานี้เมื่อใดก็ตามที่คุณตัดหัวเดียวสองจะเติบโตในสถานที่เดียวกัน เนื่องจากคุณไม่มีกลไกที่จะตัดหัวหลาย ๆ หัวในเวลาเดียวกันจำนวนหัวก็จะเพิ่มขึ้นเท่านั้น ในกรณีนี้ไฮดราของเราสามารถเริ่มต้นด้วยN(N ⩾ 1) หัว ลองเรียกรุ่นแรกพบรุ่นและเราจะแสดงหัวจากรุ่นแรกเป็น0หัวที่สร้างขึ้นหลังจากการระเบิดครั้งแรกเป็น1และอื่น ๆ
อินพุต
คุณจะได้รับจำนวนเต็มNแทนจำนวนหัวที่ไฮดรามีในตอนแรกและรายการขนาดNที่มีดัชนีซึ่ง (ในตัวอย่างฉันจะใช้รูปแบบดัชนี 0) คุณจะตัดหัวออก คุณสามารถสันนิษฐานได้ว่าดัชนีที่ให้นั้นถูกต้องเสมอ - จำไว้ว่ารายการ (เช่น: หัว) จะโตขึ้นเมื่อคุณตัดหัวออก
ตัวอย่าง
อินพุต : N = 4และ[0,4,2,5]
Generation 0 - ดัชนีการโจมตี 0
0 0 0 0 => 1 1 0 0 0
^ ^ ^
รุ่นที่ 1 - ดัชนีการโจมตี 4
1 1 0 0 0 => 1 1 0 0 2 2
^ ^ ^
รุ่นที่ 2 - ดัชนีการโจมตี 2
1 1 0 0 2 2 => 1 1 3 3 0 2 2
^ ^ ^
รุ่นที่ 3 - ดัชนีการโจมตี 5
1 1 3 3 0 2 2 => 1 1 3 3 0 4 4 2
^ ^ ^
รุ่นล่าสุด
1 1 3 3 0 4 4 2
อย่างที่คุณเห็นดัชนีที่ให้นั้นเกี่ยวข้องกับรายการของรุ่นก่อนหน้า
เอาท์พุต
คุณจะต้องส่งออกรุ่นที่ล่าสุด
กรณีทดสอบ
N = 1 and [0] => [1,1]
N = 2 and [0,0] => [2,2,1,0]
N = 2 and [0,1] => [1,2,2,0]
N = 2 and [1,0] => [2,2,1,1]
N = 2 and [1,1] => [0,2,2,1]
N = 4 and [0,4,2,5] => [1,1,3,3,0,4,4,2]
N = 6 and [0,0,0,0,0,0] => [6, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0]
N = 6 and [5,6,7,8,9,10] => [0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 6]
N = 10 and [1,7,3,12,9,0,15,2,2,10] => [6, 6, 9, 9, 8, 1, 3, 3, 0, 0, 10, 10, 2, 5, 5, 0, 0, 4, 7, 7]
นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!
N(... ) และรายการขนาดN (แต่ฉันพลาดส่วนนั้นเช่นกันเมื่อฉันอ่านครั้งแรก ความท้าทาย) ดังนั้นNไร้ประโยชน์
Nจากอินพุตเนื่องจากเป็น "ปริยาย" ที่กำหนดเป็นขนาดของอาร์เรย์ อย่างไรก็ตามฉันคิดว่าวิธีแก้ปัญหาจะช่วยประหยัดไบต์ด้วยการให้Nแทนที่จะพึ่งพาarray.size()หรือคล้ายกัน