Data entro l'intervallo?


9

Data una MM/DDdata ( 12/24) e un intervallo di date di inizio / fine ( 11/01 - 06/24), capire se la data rientra nell'intervallo di date elencato.

Gli intervalli di date possono essere sequenziali ( 05/01 - 11/01) o andare al prossimo anno ( 11/01 - 05/01).

Esempi:

  • 12/24è in 11/01 - 06/24= True
  • 06/24è in 11/01 - 06/24= True
  • 06/24è in 06/24 - 06/24= True
  • 06/24è in 11/01 - 06/23= Falso
  • 07/24è in 11/01 - 06/24= Falso
  • 07/24è in 05/01 - 11/01= True
  • 07/24è in 07/23 - 07/20= True

Gli anni non hanno importanza. Si presume che la data e / o l'intervallo di date si applichino per qualsiasi anno passato o futuro.

La data di fine sarà sempre successiva alla data di inizio. Se la data di fine è numericamente inferiore alla data di inizio, assumiamo che ci stiamo avvicinando al prossimo anno.

Le tre variabili di input possono essere tramite qualsiasi metodo (args, HTTP, stdin, ecc.) E in qualsiasi formato (stringa, JSON, array, ecc.)

La risposta può essere booleano qualsiasi forma di una stringa sì / no / corretta / ecc. Il codice più corto vince.

Non puoi semplicemente passare argomenti a una funzione integrata.


Possiamo invece prendere il risultato come una matrice di stringhe? Ie ['MM', 'DD']?
Mr. Xcoder,

Suggerimento del test:11/01 - 06/24 includes 06/24?
Mr. Xcoder

@ Mr.Xcoder stai immaginando qualcosa come ['06', '24']se fosse giusto []o cosa vuoi dire?
Xeoncross,

1
Per il tuo secondo caso di test, supponiamo che stiamo parlando quest'anno 2017e l'anno prossimo 2018. Come dovremmo determinare questo 06/24mezzo 2018e quindi dovrebbe essere Truepiuttosto che 2017e quindi Falseperché è prima 11/01?
AdmBorkBork,

1
" date > start & date < end" - Quindi alcuni dei tuoi casi di test sono sbagliati. Penso che intendi start<=date<=end.
Shaggy,

Risposte:



4

JavaScript (ES6), 26 20 byte

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

L'output è 0se arientra nell'intervallo b... c, in 1caso contrario. Modifica: salvato 6 byte grazie a @nwellnhof.


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

@nwellnhof Non riesco a credere di essermi perso - il mio primo tentativo è stato b>a^a>c, ma poi ho trascurato la semplice soluzione ...
Neil,

È necessario aggiornare il conteggio dei byte.
nwellnhof,

@nwellnhof Siamo spiacenti, mi stavo ancora riprendendo dallo shock!
Neil,


2

JavaScript (ES6), 31 byte

Accetta input come 3 stringhe nel MM/DDformato: data , range_from , range_to . Restituisce un valore booleano.

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

Casi test


Grazie al MM/DDformato puoi semplicemente usare l'ordinamento delle stringhe. Buona idea.
Xeoncross,


1

Perl 6 , 33 31 29 byte

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

Provalo online!

Accetta un elenco contenente inizio, data e fine.

-2 byte grazie a Ramillies.


E qui, puoi salvare 2 byte prendendo invece 1 argomento list. Quindi @_[0]può essere scritto come .[0]e [(whatever)] @_come [(whatever)] $_. Devi solo chiamarlo come $f(($s,$d,$e)).
Ramillies,

1

Perl 5 , 60 byte

59 byte di codice + 1 -a

$F[1]=~s/./2/if$F[1]le$F[0];say($F[2]le$F[1]&&$F[2]ge$F[0])

Provalo online!

Ingresso: start_date end_date target_date

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.