Date dans la plage?


9

Étant donné une MM/DDdate ( 12/24) et une plage de dates de début / fin ( 11/01 - 06/24), déterminez si la date se situe dans la plage de dates indiquée.

Les plages de dates peuvent être séquentielles ( 05/01 - 11/01) ou remonter à l'année suivante ( 11/01 - 05/01).

Exemples:

  • 12/24est dans 11/01 - 06/24= True
  • 06/24est dans 11/01 - 06/24= True
  • 06/24est dans 06/24 - 06/24= True
  • 06/24est 11/01 - 06/23dedans = Faux
  • 07/24est 11/01 - 06/24dedans = Faux
  • 07/24est dans 05/01 - 11/01= True
  • 07/24est dans 07/23 - 07/20= True

Les années ne comptent pas. La date et / ou la plage de dates est supposée s'appliquer à toute année passée ou future.

La date de fin sera toujours postérieure à la date de début. Si la date de fin est numériquement inférieure à la date de début, nous supposons que nous terminons l'année suivante.

Les trois variables d'entrée peuvent être via n'importe quelle méthode (args, HTTP, stdin, etc.) et dans n'importe quel format (chaîne, JSON, tableau, etc.)

La réponse peut être booleanou n'importe quelle forme de chaîne oui / non / correcte / etc. Le code le plus court gagne.

Vous ne pouvez pas simplement passer des arguments à une fonction intégrée.


Pouvons-nous plutôt prendre le résultat comme un tableau de chaînes? C'est à dire ['MM', 'DD']?
M. Xcoder

Suggestion de cas de test:11/01 - 06/24 includes 06/24?
M. Xcoder

@ Mr.Xcoder imaginez-vous quelque chose comme ['06', '24']si vous avez raison []ou que voulez-vous dire?
Xeoncross

1
Pour votre deuxième cas de test, supposons que nous parlions cette année 2017et l'année prochaine 2018. Comment sommes-nous censés déterminer ce 06/24moyen 2018et donc devrait être Trueplutôt que 2017et donc Falseparce que c'est avant 11/01?
AdmBorkBork

1
" date > start & date < end" - Alors certains de vos cas de test sont erronés. Je pense que vous voulez dire start<=date<=end.
Shaggy

Réponses:



4

JavaScript (ES6), 26 20 octets

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

La sortie est 0si ase situe dans la plage b... c, 1sinon. Edit: 6 octets enregistrés grâce à @nwellnhof.


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

@nwellnhof Je ne peux pas croire que j'ai raté ça - ma toute première tentative a été b>a^a>c, mais j'ai ensuite ignoré la solution simple ...
Neil

Vous devez mettre à jour le nombre d'octets.
nwellnhof

@nwellnhof Désolé, j'étais encore sous le choc!
Neil


2

JavaScript (ES6), 31 octets

Prend l'entrée en 3 chaînes au MM/DDformat: date , range_from , range_to . Renvoie un booléen.

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

Cas de test


Grâce au MM/DDformat, vous pouvez simplement utiliser le tri des chaînes. Bonne idée.
Xeoncross


1

Perl 6 , 33 31 29 octets

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

Essayez-le en ligne!

Prend une liste contenant le début, la date et la fin.

-2 octets grâce à Ramillies.


Et ici, vous pouvez enregistrer 2 octets en prenant à la place 1 argument de liste. Puis @_[0]peut être écrit au fur .[0]et à [(whatever)] @_mesure [(whatever)] $_. Vous aurez juste besoin de l'appeler comme $f(($s,$d,$e)).
Ramillies

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.