Trong nỗ lực san bằng sân chơi giữa các ngôn ngữ có thư viện ngày tích hợp và những ngôn ngữ không có, hãy làm việc với một lịch giả tưởng. Vương quốc bị lãng quên là một thiết lập chiến dịch ( ? ) Cho Dungeons & Dragons. Tất nhiên, mỗi người có lịch riêng.
Lịch của Harptos
Thuận tiện, một năm ở cõi lãng quên cũng có 365 ngày. Hơn nữa, lịch cũng có 12 tháng. Tuy nhiên, đây là nơi nó trở nên thú vị. Mỗi tháng chính xác là 30 ngày. 5 ngày còn lại là những ngày nghỉ giữa các tháng. Dưới đây là các tháng và ngày lễ theo thứ tự (có ngày lễ thụt lề):
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
Lưu ý rằng tôi đã chèn một kỳ nghỉ thứ sáu trong ngoặc. Đây là ngày nhuận chỉ xảy ra bốn năm một lần (vâng, đó là - không có thêm shenanigans nào trong nhiều thế kỷ).
Lưu ý bên về tên tháng: mỗi tháng có một tên chính thức và tên chung. Trên đây là những tên phổ biến. Tôi đã chọn những thứ đó vì tôi nghĩ chúng cho phép nén thú vị hơn.
Có một số số của năm, nhưng phổ biến nhất là Dalereckaming , rút ngắn thành DR . (Ngoài ra, mỗi năm có một hoặc nhiều tên , nhưng chúng tôi sẽ không bận tâm với điều đó.)
Các thành phần của một ngày nên được phân tách bằng dấu phẩy và dấu cách. Nói chung, một ngày hợp lệ có thể trông giống như:
4, The Melting, 1491 DR
hoặc là
Shieldmeet, 1464 DR
Lưu ý rằng không có số ngày cho các ngày lễ. (Tôi cho rằng 4th of The Melting
sẽ đẹp hơn vào những ngày trong tháng, nhưng tôi không muốn kéo số thứ tự vào đây.)
Chú thích: Tôi đã nghĩ ra điều này khi xnor phàn nàn rằng mọi thử thách ngày duy nhất đều cần tính toán năm nhuận. Tôi đã thất bại trong việc loại bỏ nó hoàn toàn, nhưng ít nhất nó chỉ là một modulo duy nhất trong lịch này.
Các thách thức
Cho một ngày hợp lệ của Lịch Harptos, cũng như một số nguyên D
, xuất ra các ngày D
ngày sau đó. Lưu ý rằng D
có thể âm, trong trường hợp đó bạn nên trả lại ngày D
ngày trước đó.
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm và xuất kết quả qua tham số STDOUT (hoặc thay thế gần nhất), tham số trả về hàm hoặc tham số hàm (out).
Bạn có thể cho rằng năm dương và dưới 2000.
Luật golf tiêu chuẩn được áp dụng.
Các trường hợp thử nghiệm
Hàng chục trường hợp thử nghiệm đầu tiên nên kiểm tra tất cả các trường hợp cạnh xung quanh các ngày lễ và năm nhuận. Bộ tiếp theo là để kiểm tra phạm vi trong nhiều năm làm việc và tất cả các tháng và ngày lễ đã được thực hiện. Nửa thứ hai là tất cả các trường hợp thử nghiệm một lần nữa nhưng với độ lệch âm.
"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"