Başka bir tarih düzenleme sorunu: P
Görev
Bir kullanıcı tarafından verilen iki tarih arasındaki farkı hesaplayan bir program veya işlev yazın.
Giriş çıkış
Bir öncekine benzer şekilde , girişler YYYYMMDDboşluk , virgül ,veya eksi işareti ile ayrılmış iki s'dir -.
Giriş değerlerine örnek:
20100101-20010911
20110620-20121223
19000101 20101010
33330101,19960229
00010101 99991231
Çıktı, iki tarih arasındaki fark olan gün cinsinden bir tamsayıdır.
Örneğin, girdi 20110101-20100101verimleri 365ve 33320229 17000101verimleri 596124.
Sonuçları test edebilirsiniz burada burada . (Aşağıdaki rintaun'un yorumlarına bakın.) İki tarih aynıysa, 0tarih geçerliyse program geri dönmelidir (bkz. Skor ).
kısıtlama
Tabii ki, gereken kullanmayan herhangi / ... zaman damgası veya tarihe ilgili fonksiyon / sınıfın türlü ve kullanmak gerekir Gregoryen takvim .
Puan
Kodunuz kısıtlamayı korumuyorsa, o zaman score = -∞.
Varsayılan bonus1'dir.
- Kodunuz giriş sırasından bağımsız olarak çalışıyorsa (örneğin,
20100101,20110101döndürür365veya-365)bonus+=1,. - Kodunuz işleyebilir yıl 0 ,
bonus+=0.5. - Kodunuz geçersiz ayı (1 ~ 12 arasında) / tarihi (1 ~ 31 arasında) tanıyorsa
20109901veya beğenirse ve programı34720132yazdırırE(& sonlandırır veya benzeri bir şey döndürürse0)bonus+=1,. - Ne olursa olsun yukarıdaki kural, kodunuz geçersiz tarihleri gibi tanırsa
20100230,20100229ya20111131ve baskılarE(& gibi program veya döner bir şey sonlandırır0),bonus+=1. - Ne olursa olsun iki kural yukarıdaki, kodunuz gibi geçersiz giriş dizesi, tanırsa
20100101|20100202veya2010010120100202ve baskılarE(& gibi program veya döner bir şey sonlandırır0),bonus+=1.
score = floor(-4.2*code.length/bonus). En yüksek puanı alan kod kazanır. En iyi iki kod aynı puana sahipse, en yüksek bonus kazanan kodlar kazanır. En iyi iki kodun skoru ve bonusu aynı ise, en yüksek oyu alan kodlar kazanır.
(Teslim tarihi: 5'ten fazla kod varsa (veya eşittir) +1.
20040229. : P
365*4 + 2 + 2= 1464'ten beri yanlıştı . Bilgi için teşekkürler!