ในหนึ่งในแถบ xkcd ที่เป็นสัญลักษณ์มากขึ้น Randall Munroe แสดงให้เห็นถึงเส้นเวลาของภาพยนตร์หลายเรื่องในแผนภูมิบรรยาย:
ที่มา: xkcd เลขที่ 657
กำหนดสเปคของไทม์ไลน์ของภาพยนตร์ (หรือเรื่องเล่าอื่น ๆ ) คุณจะต้องสร้างแผนภูมิดังกล่าว นี่คือการประกวดความนิยมดังนั้นคำตอบที่ได้คะแนนมากที่สุด (สุทธิ) จะเป็นผู้ชนะ
ความต้องการขั้นต่ำ
หากต้องการกระชับ spec เล็กน้อยนี่คือชุดคุณลักษณะขั้นต่ำที่ทุกคำตอบต้องนำไปปฏิบัติ:
ใช้เป็นรายการชื่อตัวละครตามด้วยรายการเหตุการณ์ แต่ละเหตุการณ์เป็นรายการของอักขระที่กำลังจะตายหรือรายชื่อกลุ่มของอักขระ (แสดงว่าอักขระใดอยู่ด้วยกันในปัจจุบัน) นี่คือตัวอย่างหนึ่งสำหรับการบรรยายเรื่อง Jurassic Park ที่สามารถเข้ารหัสได้:
["T-Rex", "Raptor", "Raptor", "Raptor", "Malcolm", "Grant", "Sattler", "Gennaro", "Hammond", "Kids", "Muldoon", "Arnold", "Nedry", "Dilophosaurus"] [ [[0],[1,2,3],[4],[5,6],[7,8,10,11,12],[9],[13]], [[0],[1,2,3],[4,7,5,6,8,9,10,11,12],[13]], [[0],[1,2,3],[4,7,5,6,8,9,10],[11,12],[13]], [[0],[1,2,3],[4,7,5,6,9],[8,10,11,12],[13]], [[0,4,7],[1,2,3],[5,9],[6,8,10,11],[12],[13]], [7], [[5,9],[0],[4,6,10],[1,2,3],[8,11],[12,13]], [12], [[0, 5, 9], [1, 2, 3], [4, 6, 10, 8, 11], [13]], [[0], [5, 9], [1, 2], [3, 11], [4, 6, 10, 8], [13]], [11], [[0], [5, 9], [1, 2, 10], [3, 6], [4, 8], [13]], [10], [[0], [1, 2, 9], [5, 6], [3], [4, 8], [13]], [[0], [1], [9, 5, 6], [3], [4, 8], [2], [13]], [[0, 1, 9, 5, 6, 3], [4, 8], [2], [13]], [1, 3], [[0], [9, 5, 6, 3, 4, 8], [2], [13]] ]
เช่นบรรทัดแรกหมายความว่าที่จุดเริ่มต้นของแผนภูมิ T-Rex เป็นหนึ่งเดียวแร็พเตอร์ทั้งสามอยู่ด้วยกันมิลล์ส์อยู่คนเดียวแกรนท์และ Sattler อยู่ด้วยกัน ฯลฯ เหตุการณ์ที่สองถึงครั้งสุดท้ายหมายความว่าแร็พเตอร์สองคนตาย .
คุณคาดหวังว่าการป้อนข้อมูลจะขึ้นอยู่กับคุณตราบเท่าที่สามารถระบุข้อมูลประเภทนี้ได้ เช่นคุณอาจใช้รูปแบบรายการที่สะดวก นอกจากนี้คุณยังสามารถคาดหวังว่าตัวละครในเหตุการณ์จะเป็นชื่อเต็มของตัวละครอีกครั้งเป็นต้น
คุณอาจ (แต่ไม่จำเป็นต้อง) สมมติว่าแต่ละกลุ่มมีตัวละครที่มีชีวิตในแต่ละกลุ่ม อย่างไรก็ตามคุณไม่ควรสันนิษฐานว่ากลุ่มหรือตัวละครในเหตุการณ์เดียวนั้นอยู่ในลำดับที่สะดวกมาก
เรนเดอร์ไปที่หน้าจอหรือไฟล์ (เป็นกราฟิกแบบเวกเตอร์หรือแรสเตอร์) ซึ่งมีหนึ่งบรรทัดสำหรับแต่ละอักขระ แต่ละบรรทัดจะต้องมีป้ายกำกับด้วยชื่ออักขระที่จุดเริ่มต้นของบรรทัด
- สำหรับแต่ละเหตุการณ์ปกติจะต้องมีบางส่วนของแผนภูมิที่กลุ่มอักขระมีความคล้ายคลึงกันอย่างชัดเจนตามความใกล้เคียงของแต่ละบรรทัด
- สำหรับแต่ละเหตุการณ์ความตายบรรทัดของตัวละครที่เกี่ยวข้องจะต้องยุติในหยดที่มองเห็นได้
- คุณไม่ต้องทำซ้ำคุณสมบัติอื่น ๆ ของแปลงของ Randall และคุณไม่ต้องทำซ้ำรูปแบบการวาดของเขา เส้นตรงที่มีการเลี้ยวที่คมชัดทั้งหมดเป็นสีดำโดยไม่มีป้ายกำกับเพิ่มเติมและชื่อเรื่องนั้นสมบูรณ์แบบมากที่จะเข้าร่วมการแข่งขัน ไม่จำเป็นต้องใช้พื้นที่อย่างมีประสิทธิภาพเช่นคุณอาจทำให้อัลกอริทึมของคุณง่ายขึ้นโดยเพียงแค่ลากเส้นลงด้านล่างเพื่อพบกับตัวละครอื่น ๆ ตราบใดที่ยังมีทิศทางของเวลา
ฉันได้เพิ่มโซลูชันอ้างอิงซึ่งตอบสนองความต้องการขั้นต่ำเหล่านี้ทั้งหมด
ทำให้มันสวย
นี่คือการประกวดความนิยมดังนั้นคุณอาจใช้สิ่งที่คุณต้องการ การเพิ่มที่สำคัญที่สุดคืออัลกอริธึมเลย์เอาต์ที่เหมาะสมซึ่งทำให้แผนภูมิมีความชัดเจนมากขึ้น - เช่นทำให้โค้งงอในเส้นที่ง่ายต่อการติดตามและลดจำนวนการข้ามเส้นที่จำเป็น นี่เป็นปัญหาขั้นตอนวิธีหลักของความท้าทายนี้! คะแนนโหวตจะตัดสินว่าอัลกอริทึมของคุณทำงานได้ดีเพียงใดในการรักษาแผนภูมิให้เป็นระเบียบ
แต่ต่อไปนี้เป็นแนวคิดเพิ่มเติมส่วนใหญ่มาจากแผนภูมิของ Randall:
การตกแต่ง:
- เส้นสี
- หัวเรื่องสำหรับพล็อต
- การติดฉลากสิ้นสุดบรรทัด
- จัดเรียงบรรทัดใหม่โดยอัตโนมัติซึ่งผ่านส่วนที่ไม่ว่าง
- สไตล์วาดด้วยมือ (หรืออื่น ๆ ตามที่ฉันได้กล่าวไว้ว่าไม่จำเป็นต้องสร้างสไตล์ของแรนดัลหากคุณมีแนวความคิดที่ดีกว่า) สำหรับบรรทัดและแบบอักษร
- การวางแนวที่ปรับแต่งได้ของแกนเวลา
ความหมายเพิ่มเติม:
- เหตุการณ์ที่มีชื่อ / กลุ่ม / ความตาย
- เส้นหายไปและปรากฏขึ้นอีกครั้ง
- ตัวละครเข้ามาสาย
- ไฮไลท์ที่ระบุคุณสมบัติ (สามารถถ่ายโอนได้?) ของตัวละคร (เช่นดู ringbearer ในแผนภูมิ LotR)
- การเข้ารหัสข้อมูลเพิ่มเติมในแกนการจัดกลุ่ม (เช่นข้อมูลทางภูมิศาสตร์เช่นในแผนภูมิ LotR)
- เดินทางข้ามเวลา
- ความเป็นจริงทางเลือก?
- ตัวละครเปลี่ยนเป็นอีกเรื่องหนึ่งหรือไม่?
- ตัวละครสองตัวผสาน? (แยกตัวละคร?)
- 3D? (ถ้าคุณไปไกลขนาดนั้นจริงๆโปรดตรวจสอบให้แน่ใจว่าคุณใช้มิติเพิ่มเติมเพื่อดูภาพที่น่าจดจำจริง ๆ !)
- คุณสมบัติอื่น ๆ ที่เกี่ยวข้องซึ่งอาจเป็นประโยชน์ในการแสดงภาพเล่าเรื่องของภาพยนตร์ (หรือหนังสือ ฯลฯ )
แน่นอนว่าสิ่งเหล่านี้จำนวนมากต้องการข้อมูลเพิ่มเติมและคุณสามารถเพิ่มรูปแบบการป้อนข้อมูลของคุณได้ตามต้องการ แต่โปรดบันทึกว่าจะป้อนข้อมูลอย่างไร
โปรดรวมหนึ่งหรือสองตัวอย่างเพื่ออวดคุณสมบัติที่คุณใช้
โซลูชันของคุณควรจะสามารถจัดการกับอินพุตที่ถูกต้องได้ แต่มันก็ใช้ได้จริง ๆ ถ้ามันเหมาะกับเรื่องเล่าบางประเภทดีกว่าเรื่องอื่น ๆ
เกณฑ์การลงคะแนน
ฉันไม่มีภาพลวงตาที่ฉันสามารถบอกคนอื่นว่าพวกเขาควรใช้คะแนนของพวกเขาอย่างไร แต่นี่คือแนวทางที่แนะนำบางอย่างตามลำดับความสำคัญ:
- Downvote คำตอบที่ใช้ประโยชน์จากช่องโหว่มาตรฐานหรืออื่น ๆ หรือเข้ารหัสอย่างน้อยหนึ่งผลลัพธ์
- อย่าถอนคำตอบที่ไม่เป็นไปตามข้อกำหนดขั้นต่ำ (ไม่ว่าแฟนซีจะเหลือแค่ไหน)
- ก่อนอื่นอัลกอริทึมการเลย์เอาต์ที่ดีขึ้น ซึ่งรวมถึงคำตอบที่ไม่ได้ใช้พื้นที่แนวตั้งจำนวนมากในขณะที่ย่อเล็กสุดข้ามเส้นเพื่อให้กราฟชัดเจนหรือจัดการการเข้ารหัสข้อมูลเพิ่มเติมลงในแกนตั้ง การมองภาพการจัดกลุ่มโดยไม่ทำให้ยุ่งเหยิงมากควรเป็นจุดสนใจหลักของความท้าทายนี้เช่นนี้เป็นการประกวดการเขียนโปรแกรมที่มีปัญหาอัลกอริทึมที่น่าสนใจ
- โหวตคุณสมบัติที่เป็นตัวเลือกซึ่งเพิ่มพลังการแสดงออก (เช่นการตกแต่งที่ไม่บริสุทธิ์)
- สุดท้ายนี้ขอเสนอการนำเสนอที่ดี
[[x,y,z]]
จะหมายความว่าตัวละครทั้งหมดอยู่ด้วยกันในปัจจุบัน แต่ถ้าเหตุการณ์ไม่ได้มีรายการ แต่มีเพียงตัวละครโดยตรงมันเป็นความตายดังนั้นในสถานการณ์เดียวกัน[x,y,z]
หมายความว่าตัวละครทั้งสามนั้นตาย อย่าลังเลที่จะใช้รูปแบบอื่นโดยมีข้อบ่งชี้ชัดเจนว่ามีบางสิ่งบางอย่างที่เป็นความตายหรือเหตุการณ์การจัดกลุ่มหากสิ่งนั้นช่วยคุณได้ รูปแบบข้างต้นเป็นเพียงข้อเสนอแนะ ตราบใดที่รูปแบบการป้อนข้อมูลของคุณมีความหมายอย่างน้อยที่สุดคุณสามารถใช้อย่างอื่นได้