Data w zakresie?


9

Biorąc pod uwagę MM/DDdatę ( 12/24) i zakres dat rozpoczęcia / zakończenia ( 11/01 - 06/24), dowiedz się, czy data mieści się w podanym zakresie dat.

Zakresy dat mogą być sekwencyjne ( 05/01 - 11/01) lub obejmować kolejny rok ( 11/01 - 05/01).

Przykłady:

  • 12/24jest w 11/01 - 06/24= Prawda
  • 06/24jest w 11/01 - 06/24= Prawda
  • 06/24jest w 06/24 - 06/24= Prawda
  • 06/24jest w 11/01 - 06/23= False
  • 07/24jest w 11/01 - 06/24= False
  • 07/24jest w 05/01 - 11/01= Prawda
  • 07/24jest w 07/23 - 07/20= Prawda

Lata nie mają znaczenia. Zakłada się, że data i / lub zakres dat będzie obowiązywał dla dowolnego roku przeszłego lub przyszłego.

Data końcowa zawsze będzie późniejsza niż data początkowa. Jeśli data końcowa jest liczbowo krótsza niż data początkowa, zakładamy, że zbliżamy się do następnego roku.

Trzy zmienne wejściowe mogą być za pomocą dowolnej metody (args, HTTP, stdin itp.) I w dowolnym formacie (ciąg, JSON, tablica itp.)

Odpowiedź może być booleandowolną postacią ciągu tak / nie / poprawny / itp. Najkrótszy kod wygrywa.

Nie można po prostu przekazywać argumentów do wbudowanej funkcji.


Czy zamiast tego możemy wziąć wynik jako tablicę ciągów? To znaczy ['MM', 'DD']?
Pan Xcoder,

Sugestia przypadku testowego:11/01 - 06/24 includes 06/24?
Pan Xcoder,

@ Mr.Xcoder, czy wyobrażasz sobie coś takiego ['06', '24'], jak w innym przypadku []lub co masz na myśli?
Xeoncross,

1
W drugim przypadku testowym załóżmy, że rozmawiamy w tym roku 2017i w przyszłym roku 2018. Jak mamy określić te 06/24środki, 2018a zatem powinniśmy być, Truea nie 2017dlatego, Falseże tak było wcześniej 11/01?
AdmBorkBork

1
date > start & date < end” - W takim razie niektóre z twoich przypadków testowych są nieprawidłowe. Myślę, że masz na myśli start<=date<=end.
Shaggy

Odpowiedzi:



4

JavaScript (ES6), 26 20 bajtów

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

Wyjście jest 0jeśli amieści się w zakresie b... c, 1czy nie. Edycja: Zapisano 6 bajtów dzięki @nwellnhof.


1
Co (a,b,c)=>b>c^b>a^a>c?
nwellnhof,

@nwellnhof Nie mogę uwierzyć, że mi tego brakowało - moja pierwsza próba była b>a^a>c, ale potem przeoczyłem prostą poprawkę ...
Neil

Powinieneś zaktualizować liczbę bajtów.
nwellnhof,

@nwellnhof Przepraszam, wciąż szarpałem się po szoku!
Neil


2

JavaScript (ES6), 31 bajtów

Pobiera dane wejściowe jako 3 ciągi znaków w MM/DDformacie: data , zakres_od , zakres_do . Zwraca wartość logiczną.

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

Przypadki testowe


Dzięki MM/DDformatowi możesz po prostu użyć sortowania ciągów. Dobry pomysł.
Xeoncross,


1

Perl 6 , 33 31 29 bajtów

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

Wypróbuj online!

Pobiera listę zawierającą datę rozpoczęcia, datę i zakończenie.

-2 bajty dzięki Ramillies.


Tutaj możesz zapisać 2 bajty, biorąc zamiast tego 1 argument listy. Następnie @_[0]można zapisać jako .[0]i [(whatever)] @_jako [(whatever)] $_. Musisz to tak nazwać $f(($s,$d,$e)).
Ramillies,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.