ในความท้าทายนี้งานของคุณคือการสร้างกราฟที่ไม่มีทิศทางจากลำดับของคำสั่ง มีหนึ่งคำสั่งสำหรับแต่ละจำนวนเต็มไม่ใช่ค่าลบและแต่ละแปลงกราฟที่กำหนดเป็นหนึ่งใหม่
- คำสั่ง
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
กฎรายละเอียด
คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ จำนวนไบต์ที่สั้นที่สุดชนะ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต โปรดอธิบายอัลกอริทึมของคุณในคำตอบของคุณ
เป็นเวลาหนึ่งสัปดาห์ดังนั้นฉันจึงตอบรับสั้นที่สุด หากสิ่งที่สั้นกว่ามาในภายหลังฉันจะอัปเดตตัวเลือกของฉัน การกล่าวถึงอย่างมีเกียรติไปถึงคำตอบของปีเตอร์เทย์เลอร์ซึ่งคนอื่น ๆ หลายคนอิงรวมถึงผู้ชนะ