Daha ikonik olan xkcd şeritlerinden birinde Randall Munroe, birkaç filmin zaman çizelgelerini anlatım tablolarında görselleştirdi:
(Daha büyük versiyon için tıklayınız.)
Kaynak: xkcd No. 657 .
Bir filmin (veya başka bir anlatının) zaman çizelgesinin bir spesifikasyonu göz önüne alındığında, böyle bir grafik oluşturmalısınız. Bu bir popülerlik yarışmasıdır, bu nedenle en fazla (net) oyu olan cevap kazanacaktır.
Minimum Gereksinimler
Spesifikasyonu biraz sıkmak için, her cevabın uygulanması gereken asgari özellik kümesi:
Girdi olarak karakter isimlerinin bir listesini ve ardından bir etkinlik listesini alın. Her olay, ölen karakterlerin bir listesi veya karakter gruplarının bir listesidir (şu anda hangi karakterlerin birlikte olduğunu belirtir). Jurassic Park anlatısının nasıl kodlanabileceğine bir örnek:
["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]] ]
Örneğin, ilk satır, tablonun başında T-Rex'in yalnız olduğu, üç Raptors'un bir arada olduğu, Malcolm'ın yalnız olduğu, Grant ve Sattler'in bir arada olduğu vs. anlamına geliyor. .
Bu tür bir bilgi belirtilebildiği sürece, girişin tam olarak ne kadar beklediğiniz size kalmış. Örneğin herhangi bir uygun liste formatı kullanabilirsiniz. Ayrıca olaylardaki karakterlerin tekrar tam karakter adları olmasını bekleyebilirsiniz.
Her grup listesinin, her bir canlı karakteri tam olarak bir grupta içerdiğini varsayabilir (ancak buna mecbur değilsiniz). Ancak, gereken değil grupları veya karakterler varsayalım içinde bir olay özellikle elverişli olarak sıralanmıştır.
Ekrana veya dosyaya (vektör veya raster grafik olarak), her karakter için bir satır içeren bir grafik oluşturur. Her satır, satırın başında bir karakter adıyla etiketlenmelidir.
- Her normal olay için, sırayla, karakter gruplarının ilgili satırlarının yakınlığına açıkça benzetildiği grafiğin bazı kesiti olmalıdır.
- Her ölüm olayı için ilgili karakterlerin satırları görünür bir satırda sona ermelidir.
- Sen do not Randall parsellerin başka özelliklerini çoğaltmak zorunda, ne sen onun çizim tarzı çoğaltmak var. Keskin dönüşleri olan düz çizgiler, tümü siyah renkte, daha fazla etiket olmadan ve bir başlık, rekabete girmek için mükemmel derecede iyidir. Ayrıca, alanı verimli bir şekilde kullanmaya gerek yoktur - örneğin, fark edilebilir bir zaman yönü olduğu sürece, diğer karakterlerle buluşmak için çizgileri yalnızca aşağı doğru hareket ettirerek algoritmanızı basitleştirebilirsiniz.
Bu minimum gereklilikleri tam olarak karşılayan bir referans çözümü ekledim .
Güzel yapma
Bu bir popülerlik yarışması olsa da, bunun üzerine, ne istersen hayal gücünü uygulayabilirsin. En önemli ekleme, çizelgeyi daha okunaklı hale getiren iyi bir yerleşim algoritmasıdır - örneğin, hatlardaki virajları takip etmesini kolaylaştırır ve gerekli satır geçişlerinin sayısını azaltır. Bu, bu zorluğun temel algoritmik problemidir! Oylar algoritmanın grafiğin düzenli kalmasında ne kadar iyi performans gösterdiğine karar verecek.
Ancak burada, çoğu Randall'ın çizelgelerine dayanarak, çoğu fikir var:
Dekorasyon:
- Renkli çizgiler
- Arsa için bir başlık.
- Etiketleme çizgisi biter.
- Meşgul bir bölümden geçen satırları otomatik olarak yeniden etiketler.
- Çizilmiş stil (veya diğer? Dediğim gibi, daha iyi bir fikriniz varsa Randall'ın stilini çoğaltmanıza gerek yoktur) satırlar ve yazı tipleri için.
- Zaman ekseninin özelleştirilebilir yönü.
Ek Etkileyicilik:
- Adlandırılmış olaylar / gruplar / ölümler.
- Kaybolan ve yeniden görünen çizgiler.
- Karakterler geç giriyor.
- Karakterlerin (aktarılabilir?) Özelliklerini gösteren özellikler (örneğin, LotR grafiğindeki halka alıcısına bakın).
- Gruplandırma ekseninde ek bilgi kodlaması (örneğin, LotR tablosundaki gibi coğrafi bilgiler).
- Zaman yolculuğu?
- Alternatif gerçekler?
- Bir karakter diğerine dönüşüyor mu?
- İki karakter birleşiyor mu? (Bir karakter bölme?)
- 3 BOYUTLU? ( Gerçekten çok ileri giderseniz, lütfen bir şeyi görselleştirmek için ek boyutu kullandığınızdan emin olun!)
- Bir filmin (veya kitabın vb.) Anlatımını görselleştirmek için yararlı olabilecek diğer tüm ilgili özellikler.
Elbette, bunların çoğu ek girdi gerektirecek ve girdi biçiminizi gerektiği gibi yükseltmekte özgürsünüz, ancak lütfen verilerin nasıl girilebileceğini belgeleyin.
Lütfen uyguladığınız özellikleri göstermek için bir veya iki örnek ekleyin.
Çözümünüz geçerli herhangi bir girdiyle başa çıkabilmelidir, ancak belirli anlatı türlerine diğerlerinden daha uygunsa kesinlikle iyi.
Oy Verme Kriterleri
İnsanlara oylarını nasıl kullanmaları gerektiğini söyleyebileceğim konusunda hiçbir fikrim yok, ama işte önem sırasına göre önerilen bazı öneriler:
- Boşluklardan, standart olanlardan veya başkalarından yararlanan yanıtları veya bir veya daha fazla sonucu sabit kodlayan yanıtları azaltın .
- Minimum gereklilikleri yerine getirmeyen cevapları değiştirmeyin (geri kalanının ne kadar hoş olacağına bakılmaksızın).
- Birincisi ve en önemlisi, güzel yerleşim algoritmalarını iyileştirin. Bu, grafiği okunaklı tutmak için çizgilerin geçişini en aza indirirken çok fazla dikey alan kullanmayan veya ek bilgileri dikey eksene kodlamayı yöneten yanıtları içerir. Gruplaşmaları büyük bir karışıklık yaratmadan görselleştirmek, bu zorluğun ana odağı olmalıdır, öyle ki bu, kalbinde ilginç bir algoritmik problem olan bir programlama yarışması olmaya devam edecek.
- Etkileyici güç katan isteğe bağlı özellikleri iyileştirin (örn. Yalnızca saf dekorasyon değildir).
- Son olarak, güzel tanıtıma oy verin.
[[x,y,z]]
, tüm karakterlerin şu anda birlikte olduğu anlamına gelir. Ancak olay listeler içermiyorsa, ancak doğrudan karakterler içeriyorsa, bu bile bir ölümdür, bu nedenle aynı durumda [x,y,z]
bu üç karakterin ölmesi anlamına gelir. Başka bir format kullanmaktan çekinmeyin, bir şeyin ölüm ya da gruplama olayı olup olmadığını açık bir şekilde belirtiyorsa, bu size yardımcı olur. Yukarıdaki format sadece bir öneridir. Giriş biçiminiz en az etkileyici olduğu sürece başka bir şey kullanabilirsiniz.