Yerleşik tarih kütüphaneleri olan ve olmayan diller arasındaki oyun alanını dengelemek için kurgusal bir takvim ile çalışalım. Unutulmuş Diyarlar, Zindanlar ve Ejderhalar için bir ( ? ) Kampanya ayarıdır. Tabii ki, her birinin kendi takvimi var.
Harptos'un Takvimi
Uygun bir şekilde, Unutulmuş Diyarlarda bir yılda 365 gün var. Ayrıca takvimin de 12 ayı var. Ancak, burada ilginç olur. Her ay tam olarak 30 gün sürüyor. Kalan 5 gün , aylar arasında kalan tatillerdir . İşte aylar ve tatiller sırayla (tatiller girintili olarak):
1 Deepwinter
Midwinter
2 The Claw of Winter
3 The Claw of the Sunsets
4 The Claw of the Storms
Greengrass
5 The Melting
6 The Time of Flowers
7 Summertide
Midsummer
[Shieldmeet]
8 Highsun
9 The Fading
Highharvestide
10 Leaffall
11 The Rotting
The Feast of the Moon
12 The Drawing Down
Köşeli parantez içinde altıncı bir tatil yaptığım dikkat edin. Bu sadece dört yılda bir gerçekleşen artık gündür (evet, işte bu - yüzyıllar boyunca ek shenanigans yoktur).
Ay adları hakkında yan not: her ayın resmi ve ortak bir adı vardır. Yukarıdaki ortak isimlerdir. Bunları seçtim çünkü daha ilginç bir sıkıştırmaya izin verdiklerini düşünüyorum.
Orada yıllardır çeşitli numberings vardır, ama en yaygın biridir Dalereckoning kısaltılır, DR . (Ayrıca, her yıl bir veya daha fazla isim var , ancak bununla uğraşmayacağız.)
Bir tarihin bileşenleri virgül ve boşlukla ayrılmalıdır. Sonuç olarak, geçerli bir tarih şöyle görünebilir:
4, The Melting, 1491 DR
veya
Shieldmeet, 1464 DR
Tatil gün sayısı yoktur. (Sanırım 4th of The Meltingayların günleri için daha iyi olurdu, ancak sıra sayılarını buna sürüklemek istemiyorum.)
Dipnot: Xnor, her bir tarih mücadelesinin artık yıl hesaplamasına ihtiyaç duyduğundan şikayet ettiğinde bunu buldum. Tamamen ortadan kaldırmakta başarısız oldum, ama en azından bu takvimdeki tek bir modülo.
Meydan okuma
Harptos Takviminin geçerli bir tarihi ve bir tamsayı verildiğinde, günler sonraki Dtarihi çıktılar D. Bunun Dnegatif olabileceğini unutmayın; bu durumda tarih Dgünlerini daha önce iade etmelisiniz .
STDIN (veya en yakın alternatif), komut satırı bağımsız değişkeni veya işlev bağımsız değişkeni ile girdi alarak ve sonucu STDOUT (veya en yakın alternatif), işlev dönüş değeri veya işlev (çıkış) parametresi aracılığıyla çıktı alarak bir program veya işlev yazabilirsiniz.
Yılın olumlu ve 2000'den az olduğunu varsayabilirsiniz.
Standart kod golf kuralları geçerlidir.
Test Durumları
İlk düzine kadar test vakası tatilleri ve artık yılları çevreleyen tüm uç vakaları test etmelidir. Bir sonraki set, çok yıllı çalışmalarda ve tüm aylarda ve tatillerin uygulandığını test etmek. İkinci yarı yine aynı test vakalarıdır, ancak negatif ofsetlerle.
"30, Summertide, 1491 DR" 1 => "Midsummer, 1491 DR"
"30, Summertide, 1491 DR" 2 => "1, Highsun, 1491 DR"
"Midsummer, 1491 DR" 1 => "1, Highsun, 1491 DR"
"30, Summertide, 1492 DR" 1 => "Midsummer, 1492 DR"
"30, Summertide, 1492 DR" 2 => "Shieldmeet, 1492 DR"
"30, Summertide, 1492 DR" 3 => "1, Highsun, 1492 DR"
"Midsummer, 1492 DR" 1 => "Shieldmeet, 1492 DR"
"Midsummer, 1492 DR" 2 => "1, Highsun, 1492 DR"
"Shieldmeet, 1492 DR" 1 => "1, Highsun, 1492 DR"
"1, Highsun, 1490 DR" 365 => "1, Highsun, 1491 DR"
"1, Highsun, 1491 DR" 365 => "Shieldmeet, 1492 DR"
"Shieldmeet, 1492 DR" 365 => "Midsummer, 1493 DR"
"Midsummer, 1493 DR" 365 => "Midsummer, 1494 DR"
"Shieldmeet, 1500 DR" 365 => "Midsummer, 1501 DR"
"14, Deepwinter, 654 DR" 5069 => "The Feast of the Moon, 667 DR"
"Midwinter, 17 DR" 7897 => "15, The Fading, 38 DR"
"3, The Claw of Winter, 1000 DR" 813 => "25, The Claw of the Storms, 1002 DR"
"Greengrass, 5 DR" 26246 => "9, The Claw of the Sunsets, 77 DR"
"30, The Melting, 321 DR" 394 => "29, The Time of Flowers, 322 DR"
"17, The Time of Flowers, 867 DR" 13579 => "20, Highsun, 904 DR"
"Highharvestide, 1814 DR" 456 => "30, The Drawing Down, 1815 DR"
"23, The Rotting, 1814 DR" 3616 => "16, Leaffall, 1824 DR"
"1, Deepwinter, 1 DR" 730499 => "30, The Drawing Down, 2000 DR"
"Midsummer, 1491 DR" -1 => "30, Summertide, 1491 DR"
"1, Highsun, 1491 DR" -2 => "30, Summertide, 1491 DR"
"1, Highsun, 1491 DR" -1 => "Midsummer, 1491 DR"
"Midsummer, 1492 DR" -1 => "30, Summertide, 1492 DR"
"Shieldmeet, 1492 DR" -2 => "30, Summertide, 1492 DR"
"1, Highsun, 1492 DR" -3 => "30, Summertide, 1492 DR"
"Shieldmeet, 1492 DR" -1 => "Midsummer, 1492 DR"
"1, Highsun, 1492 DR" -2 => "Midsummer, 1492 DR"
"1, Highsun, 1492 DR" -1 => "Shieldmeet, 1492 DR"
"1, Highsun, 1491 DR" -365 => "1, Highsun, 1490 DR"
"Shieldmeet, 1492 DR" -365 => "1, Highsun, 1491 DR"
"Midsummer, 1493 DR" -365 => "Shieldmeet, 1492 DR"
"Midsummer, 1494 DR" -365 => "Midsummer, 1493 DR"
"Midsummer, 1501 DR" -365 => "Shieldmeet, 1500 DR"
"The Feast of the Moon, 667 DR" -5069 => "14, Deepwinter, 654 DR"
"15, The Fading, 38 DR" -7897 => "Midwinter, 17 DR"
"25, The Claw of the Storms, 1002 DR" -813 => "3, The Claw of Winter, 1000 DR"
"9, The Claw of the Sunsets, 77 DR" -26246 => "Greengrass, 5 DR"
"29, The Time of Flowers, 322 DR" -394 => "30, The Melting, 321 DR"
"20, Highsun, 904 DR" -13579 => "17, The Time of Flowers, 867 DR"
"30, The Drawing Down, 1815 DR" -456 => "Highharvestide, 1814 DR"
"16, Leaffall, 1824 DR" -3616 => "23, The Rotting, 1814 DR"
"30, The Drawing Down, 2000 DR" -730499 => "1, Deepwinter, 1 DR"