Fecha dentro del rango?


9

Dada una MM/DDfecha ( 12/24) y un intervalo de fechas de inicio / finalización ( 11/01 - 06/24), determine si la fecha está dentro del intervalo de fechas indicado.

Los rangos de fechas pueden ser secuenciales ( 05/01 - 11/01) o ajustarse al año siguiente ( 11/01 - 05/01).

Ejemplos:

  • 12/24está en 11/01 - 06/24= verdadero
  • 06/24está en 11/01 - 06/24= verdadero
  • 06/24está en 06/24 - 06/24= verdadero
  • 06/24está en 11/01 - 06/23= falso
  • 07/24está en 11/01 - 06/24= falso
  • 07/24está en 05/01 - 11/01= verdadero
  • 07/24está en 07/23 - 07/20= verdadero

Los años no mater. Se supone que la fecha y / o el rango de fechas se aplican a cualquier año pasado o futuro.

La fecha de finalización siempre será posterior a la fecha de inicio. Si la fecha de finalización es numéricamente menor que la fecha de inicio, asumimos que estamos terminando el próximo año.

Las tres variables de entrada pueden ser a través de cualquier método (args, HTTP, stdin, etc.) y en cualquier formato (cadena, JSON, matriz, etc.)

La respuesta puede ser booleano cualquier forma de una cadena sí / no / correcta / etc. El código más corto gana.

No puede simplemente pasar argumentos a una función incorporada.


¿Podemos tomar el resultado como una matriz de cadenas en su lugar? Es decir ['MM', 'DD']?
Sr. Xcoder

Sugerencia de caso de prueba:11/01 - 06/24 includes 06/24?
Sr. Xcoder

@ Mr.Xcoder, ¿te imaginas algo como ['06', '24']si fuera correcto []o qué quieres decir?
Xeoncross

1
Para su segundo caso de prueba, supongamos que estamos hablando este año 2017y el próximo 2018. ¿Cómo se supone que debemos determinar esos 06/24medios 2018y, por lo tanto, debería ser Truemás que 2017y Falseporque es antes 11/01?
AdmBorkBork

1
" date > start & date < end" - Entonces algunos de sus casos de prueba están equivocados. Creo que lo que quieres decir es start<=date<=end.
Shaggy

Respuestas:



4

JavaScript (ES6), 26 20 bytes

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

La salida es 0si se aencuentra dentro del rango b... c, 1si no. Editar: Guardado 6 bytes gracias a @nwellnhof.


1
¿Qué hay de (a,b,c)=>b>c^b>a^a>c?
nwellnhof

@nwellnhof No puedo creer que me haya perdido eso, mi primer intento fue b>a^a>c, pero luego pasé por alto la solución simple ...
Neil

Debe actualizar el recuento de bytes.
nwellnhof

@nwellnhof Lo siento, todavía me estaba recuperando del susto.
Neil


2

JavaScript (ES6), 31 bytes

Toma la entrada como 3 cadenas en MM/DDformato: fecha , rango_de , rango_to . Devuelve un booleano.

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

Casos de prueba


Gracias al MM/DDformato, puede usar la clasificación de cadenas. Buena idea.
Xeoncross


1

Perl 6 , 33 31 29 bytes

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

Pruébalo en línea!

Toma una lista que contiene inicio, fecha y fin.

-2 bytes gracias a Ramillies.


Y aquí, puede guardar 2 bytes tomando 1 argumento de lista en su lugar. Entonces @_[0]se puede escribir como .[0]y [(whatever)] @_como [(whatever)] $_. Solo tendrá que llamarlo así $f(($s,$d,$e)).
Ramillies

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.