ความท้าทายนี้ได้แรงบันดาลใจจากคำถามเกี่ยวกับ Mathematica.SE
สมมติว่าคุณมีรายการ / อาร์เรย์ที่ซ้อนกันของโครงสร้างที่กำหนดเอง (รายการในแต่ละระดับไม่จำเป็นต้องมีความยาวเท่ากัน) เพื่อความง่ายเราจะสมมติว่าโหนดนั้นเป็นจำนวนเต็มไม่เป็นลบหรืออาร์เรย์ว่าง ตัวอย่างเช่น
[[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]]
บางครั้งมันจะสะดวกกว่าที่จะแผ่แบนรายการนั้นเพื่อทำการจัดการบางอย่างของโหนดเช่น
--> [1, 3, 2, 1, 4, 12, 0, 0, 5, 7]
--> [1, 1, 0, 1, 0, 0, 0, 0, 1, 1]
แต่ในที่สุดคุณต้องการรักษาโครงสร้างดั้งเดิมเอาไว้ดังนั้นคุณต้องเปลี่ยนสิ่งนี้กลับเป็น
--> [[[1, 1], 0], [1, 0], 0, [[0, [], 0], [1, [1]]]
งานของคุณคือทำตามขั้นตอนสุดท้ายนั้น
รับรายการซ้อนของจำนวนเต็มที่ไม่เป็นลบโดยพลการซึ่งหมายถึงโครงสร้างที่ต้องการของผลลัพธ์และรายการแบนของจำนวนเต็มที่ไม่เป็นลบซึ่งเป็นตัวแทนของค่าที่ต้องการให้ปรับรายการแบนเป็นรูปแบบของรายการโครงสร้าง คุณอาจคิดว่าทั้งสองรายการมีจำนวนเต็มเท่ากัน
ตามปกติคุณไม่ต้องจัดการกับการป้อนข้อมูลที่ไม่ถูกต้อง (เช่นรายการที่สองไม่แบนการป้อนข้อมูลจะผิดรูปแบบทางไวยากรณ์ไม่มีจำนวนเต็มเป็นโหนด ฯลฯ ) คุณสามารถแก้ไขอาร์เรย์อินพุตในรหัสของคุณ
คุณอาจเขียนฟังก์ชันหรือโปรแกรมรับอินพุตผ่าน STDIN อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ฟังก์ชันและคุณอาจส่งคืนผลลัพธ์หรือพิมพ์ลงใน STDOUT คุณสามารถใช้รายการหรือรูปแบบสตริงที่สะดวกเพื่อแสดงอินพุตและเอาต์พุต (ตราบใดที่รูปแบบไม่มีความชัดเจนและอินพุตไม่ได้ถูกประมวลผลล่วงหน้า) นอกจากนี้รูปแบบของอินพุตทั้งสองจะต้องสอดคล้องกัน (ดังนั้นคุณจึงไม่สามารถรับหนึ่งอินพุตเป็นสตริงและอีกรายการเป็นรายการ) คุณอาจใช้รายการอินพุตตามลำดับใดก็ได้ แต่โปรดระบุวิธีป้อนข้อมูลที่แน่นอนในคำตอบของคุณ
ข้อ จำกัด อีกหนึ่งข้อ: คุณต้องไม่ใช้นิพจน์ทั่วไป นี่คือความท้าทายการจัดการอาร์เรย์ไม่ใช่ความท้าทายการจัดการสตริง
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ
กรณีทดสอบ
Structure Values Result
[[[1,3],2],[1,4],12,[[0,0],[5,[7]]]] [1,1,0,1,0,0,0,0,1,1] [[[1,1],0],[1,0],0,[[0,0],[1,[1]]]]
[[[0,0],0],[0,0],0,[[0,0],[0,[0]]]] [1,1,0,1,0,0,0,0,1,1] [[[1,1],0],[1,0],0,[[0,0],[1,[1]]]]
[] [] []
[[]] [] [[]]
[0,1,2,3] [5,1,0,5] [5,1,0,5]
[[[[[0]]]]] [123] [[[[[123]]]]]
[0,[1,[]],[[]],[2,3],[]] [1,6,1,8] [1,[6,[]],[[]],[1,8],[]]