ในความท้าทายนี้งานของคุณคือการสร้างกราฟที่ไม่มีทิศทางจากลำดับของคำสั่ง มีหนึ่งคำสั่งสำหรับแต่ละจำนวนเต็มไม่ใช่ค่าลบและแต่ละแปลงกราฟที่กำหนดเป็นหนึ่งใหม่
- คำสั่ง0: เพิ่มโหนดที่ไม่ได้เชื่อมต่อใหม่
- คำสั่ง1: เพิ่มโหนดใหม่และเชื่อมต่อกับทุกโหนดที่มีอยู่
- Directive m > 1: เอาโหนดทั้งหมดที่มีการศึกษาระดับปริญญา (จำนวนเพื่อนบ้าน)mหารด้วย โปรดทราบว่า0สามารถแบ่งได้โดยทั้งหมดmดังนั้นโหนดที่ไม่ได้เชื่อมต่อจะถูกลบออกเสมอ
คำสั่งถูกนำไปใช้หนึ่งโดยหนึ่งจากซ้ายไปขวาเริ่มต้นด้วยกราฟที่ว่างเปล่า ตัวอย่างเช่นลำดับ[0,1,0,1,0,1,3]จะถูกประมวลผลดังต่อไปนี้อธิบายโดยใช้ศิลปะ ASCII ที่ยอดเยี่ยม เราเริ่มต้นด้วยกราฟที่ว่างเปล่าและเพิ่มจุดยอดเดียวตามที่กำกับโดย0:
a
จากนั้นเพิ่มจุดสุดยอดอีกอันและเชื่อมต่อกับจุดแรกตามที่กำกับโดย1:
a--b
เราเพิ่มจุดสุดยอดที่ไม่ได้เชื่อมต่ออีกอันจากนั้นเชื่อมต่ออีกจุดหนึ่งตามที่กำกับโดย0และ1:
a--b   c
 \  \ /
  `--d
เราทำซ้ำอีกครั้งตามที่กำกับโดย0และ1:
  ,--f--e
 /  /|\
a--b | c
 \  \|/
  `--d
สุดท้ายเราก็ลบจุดยอดองศา -3 aและbตามที่กำกับโดย3:
f--e
|\
| c
|/
d
[0,1,0,1,0,1,3]นี้เป็นกราฟที่กำหนดโดยลำดับ
อินพุต
รายการของจำนวนเต็ม nonnegative แสดงลำดับของคำสั่ง
เอาท์พุต
จำนวนโหนดในกราฟที่กำหนดโดยลำดับ
กรณีทดสอบ
[] -> 0
[5] -> 0
[0,0,0,11] -> 0
[0,1,0,1,0,1,3] -> 4
[0,0,0,1,1,1] -> 6
[0,0,1,1,0,0,1,1,2,5,7,0,1] -> 6
[0,0,1,1,1,1,5,1,4,3,1,0,0,0,1,2] -> 6
[0,0,1,1,0,0,1,1,5,2,3,0,0,1,1,0,0,1,1,3,4,0,0,1,1,2,1,1] -> 8
[0,0,1,1,0,0,1,1,2,5,7,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,8] -> 14
กฎรายละเอียด
คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ จำนวนไบต์ที่สั้นที่สุดชนะ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต โปรดอธิบายอัลกอริทึมของคุณในคำตอบของคุณ
เป็นเวลาหนึ่งสัปดาห์ดังนั้นฉันจึงตอบรับสั้นที่สุด หากสิ่งที่สั้นกว่ามาในภายหลังฉันจะอัปเดตตัวเลือกของฉัน การกล่าวถึงอย่างมีเกียรติไปถึงคำตอบของปีเตอร์เทย์เลอร์ซึ่งคนอื่น ๆ หลายคนอิงรวมถึงผู้ชนะ