Aralık dahilinde tarih?


9

Bir MM/DDtarih ( 12/24) ve bir başlangıç ​​/ bitiş tarihi aralığı ( 11/01 - 06/24) verildiğinde, tarihin listelenen tarih aralığında olup olmadığını öğrenin.

Tarih aralıkları sıralı ( 05/01 - 11/01) olabilir veya bir sonraki yıla ( 11/01 - 05/01) sarılabilir .

Örnekler:

  • 12/24içinde 11/01 - 06/24= Doğru
  • 06/24içinde 11/01 - 06/24= Doğru
  • 06/24içinde 06/24 - 06/24= Doğru
  • 06/24içinde 11/01 - 06/23= Yanlış
  • 07/24içinde 11/01 - 06/24= Yanlış
  • 07/24içinde 05/01 - 11/01= Doğru
  • 07/24içinde 07/23 - 07/20= Doğru

Yıllar mater yok. Tarih ve / veya tarih aralığının geçmiş veya gelecek herhangi bir yıl için geçerli olduğu varsayılır.

Bitiş tarihi her zaman başlangıç ​​tarihinden sonra olacaktır. Bitiş tarihi sayısal olarak başlangıç ​​tarihinden daha azsa, bir sonraki yıla geçtiğimizi varsayıyoruz.

Üç giriş değişkeni herhangi bir yöntemle (args, HTTP, stdin, vb.) Ve herhangi bir biçimde (dize, JSON, dizi vb.) Olabilir.

Yanıt, booleanevet / hayır / doğru / etc .. dizesinin herhangi bir şekli olabilir . En kısa kod kazanır.

Argleri yerleşik bir işleve geçiremezsiniz.


Sonucu bir dizgi dizisi olarak alabilir miyiz? Yani ['MM', 'DD']?
Bay Xcoder

Test örneği önerisi:11/01 - 06/24 includes 06/24?
Bay Xcoder

@ Mr.Xcoder, ['06', '24']başka bir şey []mi yoksa ne demek istiyorsun?
Xeoncross

1
İkinci test durumunuz için, bu yıl 2017ve gelecek yıl konuştuğumuzu varsayalım 2018. Bunun 06/24anlamını nasıl belirleyeceğimiz 2018ve dolayısıyla Truedaha önce 2017ve daha Falseönce olması gerektiği için nasıl olması gerekir 11/01?
AdmBorkBork

1
" date > start & date < end" - O zaman bazı test durumlarınız yanlış. Ne demek istediğini düşünüyorum start<=date<=end.
Shaggy

Yanıtlar:



4

JavaScript (ES6), 26 20 bayt

(a,b,c)=>b>c^b>a^a>c

Çıktı ise 0eğer aaralığında yalanlar b... c, 1değilse. Düzenleme: @nwellnhof sayesinde 6 bayt kaydedildi.


1
Ne olmuş (a,b,c)=>b>c^b>a^a>c?
nwellnhof

@nwellnhof Bunu özlediğime inanamıyorum - ilk girişimim oldu b>a^a>c, ama sonra basit düzeltmeyi gözden kaçırdım ...
Neil

Bayt sayısını güncellemelisiniz.
nwellnhof

@nwellnhof Üzgünüm, hala şoktan çektim!
Neil


2

JavaScript (ES6), 31 bayt

Girdiyi MM/DDformatta 3 dize olarak alır : tarih , aralık_from , aralık_to . Bir boole döndürür.

(a,b,c)=>!(b<c?a<b|a>c:a<b&a>c)

Test senaryoları


MM/DDBiçim sayesinde dize sıralamasını kullanabilirsiniz. İyi bir fikir.
Xeoncross


1

Perl 6 , 33 31 29 bayt

{.[0]>.[2]??![>] $_!![<=] $_}

Çevrimiçi deneyin!

Başlangıç, tarih ve bitiş içeren bir liste alır.

Ramillies sayesinde -2 bayt.


Ve burada, bunun yerine 1 liste argümanı alarak 2 bayt kaydedebilirsiniz. Sonra @_[0]olarak yazılabilir .[0]ve [(whatever)] @_olarak [(whatever)] $_. Sadece böyle çağırmanız gerekecek $f(($s,$d,$e)).
Ramillies

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.