Aww, dostum, bu son kullanma tarihi ayları harflerle yazmıyor! 10 Mart'ta mı yoksa 3 Ekim'de mi bittiğini söyleyemem ... Bekle, hayır, boşver, yıl 2012 diyor. (Sokaktaki yarı kullanılmış peynir tenekesi çöp kutusuna benzeyebilir)
Bir an için bu marinara kavanoğunun ne zaman bitmesi gerektiğine karar vermek için çok meşgul olduğunuzu varsayalım. Sadece Cliff Notes versiyonunu istiyorsan: vadesi geçmiş olması ne kadar olası? Biraz kod yazalım!
Üreticilerin, tarihi üç tam formattan birinde, sipariş edilen bir tam sayı üçlüsü olarak yazdığını biliyorsunuz:
YEAR MONTH DAY
MONTH DAY YEAR
DAY MONTH YEAR
Ve bazı tarihlerin sadece bir veya iki şekilde yorumlanabileceğini biliyorsunuz, üçünün hepsinde değil: 55'inin 55-11-5
bir yıl olması gerekir, yani bu özel Twinki kutusu kutusu 5 Kasım 1955'te sona erdi. Yıl bazen dört basamaklı iki değil, bazı seçenekleri ekarte edebilir. İki basamak olduğunda, 50, 99, 1950.1999 ve 0..49, 2000..2049 anlamına gelir.
İşiniz, yukarıdaki yorumlardan en az birinde geçerli bir tarih olan ve tam olarak hala iyi olma şansını veren bir tam sayı dizisi alan bir program veya işlev yazmaktır. Yüzde şans, sadece bugünün tarihinden önceki veya sonraki tarihin geçerli yorumlarının yüzdesidir .
Bir tamsayı dizisi, [Int]
eğer bir işlevin argümanı ise , dilin uzunluğu 3 türünde olacaktır ve STDIN’de bir tam program. *
"Bugünün tarihi", bir tarih fonksiyonu aracılığıyla elde edilen bugünün gerçek tarihi veya STDIN'de işlev veya ekstra paramater için ekstra argüman olarak verilen tarih olabilir. Unix çağında, yukarıdaki üç yoldan birine girilen bir yıl-ay-gün üçlü veya daha uygun bir şekilde olabilir.
Hadi birkaç örnek verelim! Son kullanma tarihi girişi çizgi ile ayrılmış bir stilde olacaktır ve aşağıdaki örneklerin bugünün tarihinin 5 Temmuz 2006 olduğunu varsayalım.
14-12-14
- Bunun için her iki geçerli yorum (DMY ve YMD) 14 Aralık 2014'e eşdeğerdir. Çıktı 100, çünkü bu ürün kesinlikle hala iyi.8-2-2006
- Son sayı, dört basamaklı olduğundan kesinlikle bir yıldır. Bu, 8 Şubat (süresi dolmuş) veya 2 Ağustos (hala iyi) olabilir. Çıktı 50 .6-7-5
- Bu herhangi bir şey olabilir! "5 Temmuz 2006" yorumu hala iyi (sadece bir gün için), fakat kalan ikisi 2005 yılında yapıldı ve mümkün olduğunca çabuk atılması gerekiyor. Çıkış 33 .6-5-7
- Burada, üç yorumdan ikisi güvende. Ondalık yukarı veya aşağı yuvarlayabilirsiniz, böylece 66 ya da 67 her ikisi de tamamdır.12-31-99
- Tamam, bu, yüzyılın başından itibaren açıkça belli (50 - 99 yaşları 19XX, ve 31 muhtemelen bir ay olamaz). Büyük bir yağ 0 ve gerçekten buzdolabınızı daha sık temizlemelisiniz.
Yukarıda belirtilen standartlara uymayan herhangi bir girişin yukarıdaki çıkış kurallarına özgü olmadığını güvenle kabul edebilirsiniz.
Web isteği veya standart boşluk yok. Tarih işleme kütüphanelerine izin verilir. Bu kod golf: En kısa program kazanabilir.
* Eğer beyin ya da benzer şekilde veri türü engellenmiş bir dil kullanıyorsanız, girdideki ilk üç karakterin ASCII değerlerinin tarih için tamsayılar olduğunu varsayabilirsiniz. Bu, dört basamaklı yıl mantığını hariç tutuyor, elbette, ancak Brainfuck'ta bunun için bir çözüm görerek çok sizi şaşırtacağımızı düşünüyorum.