Étant donné une liste de plages de dates r
en entrée, en sortie ou renvoyant toutes les plages non trouvées dans r
.
Pour cet exemple, l'entrée sera au YYYY-MM-DD
format.
Disons que vous avez trois plages de dates:
[2019-01-01, 2019-02-01]
[2019-02-02, 2019-04-05]
[2019-06-01, 2019-07-01]
Vous pouvez voir qu'il y a un écart entre 2019-04-05
et 2019-06-01
.
Le résultat sera cet écart: [2019-04-06, 2019-05-31]
Règles
- L'entrée et la sortie peuvent être dans n'importe quel format de date ou de collection raisonnable, tant qu'elles sont cohérentes.
- Supposons que l'entrée n'est pas ordonnée.
- Votre plage de dates ne doit pas nécessairement être
[latest, earliest]
, mais elle doit suivre la règle 2. - Supposons qu'il n'y a pas de dates qui se chevauchent dans l'entrée
Cas de test:
Contribution: [[2019-01-01, 2019-02-01],[2019-02-02, 2019-04-05],[2019-06-01, 2019-07-01]]
Production: [[2019-04-06, 2019-05-31]]
Contribution: [[2019-01-01, 2019-02-01],[2018-02-02, 2018-04-05],[2019-06-01, 2019-07-01]]
Production: [[2018-04-06, 2018-12-31], [2019-02-02, 2019-05-31]]
Contribution: [[2019-01-01, 2019-02-01],[2019-02-02, 2019-03-02],[2019-03-03, 2019-07-01]]
Production: []
Contribution: [[2019-01-01, 2019-02-01], [2019-11-02, 2019-11-20]]
Production: [[2019-02-02, 2019-11-01]]
Contribution: [[2019-01-01, 2019-02-01],[2019-02-03, 2019-04-05]]
Sortie: [[2019-02-02, 2019-02-02]]
ou[[2019-02-02]]
YYYY-MM-DD
car le format actuel est à la fois étranger à de nombreuses personnes et rendu encore plus difficile à analyser en raison de l'utilisation de petits jours de mois≤12.Réponses:
APL (Dyalog Extended) ,
282524 octetsFonction de préfixe tacite anonyme. L'argument et le résultat sont des matrices à 2 colonnes de nombres de jours depuis une époque, chaque ligne représentant une plage.
Essayez-le en ligne! La fonction de
In
pré-processeur convertit d'une liste de paires de listes à 3 éléments (dates dans l'ordre ISO) en une matrice à 2 colonnes d'IDN, International Day Numbers (jours depuis 1899-12-31). LaOut
fonction post-processeur convertit une matrice d'IDN en une matrice de listes à 3 éléments.∧
trier les lignes en ordre croissant1⌽
faire pivoter les dates de façon cyclique un pas à gauche⍢,
tout en défilant (aplati) - après, remodeler à nouveau la forme d'origine1 ¯1+
ajouter un et un négatif en⍤1
utilisant cette liste pour chaque ligne∘
du résultat de{
…}
le lambda suivant:⍵
l'argument-⍨/
soustrait la date de gauche de la date de droite, le1<
masque par ligne où les différences dépassent un (c'est-à-dire où les plages ne sont pas adjacentes)⍵⌿⍨
filtre les rangées par ce masquela source
C # (compilateur interactif Visual C #) , 108 octets
Sorties par impression au format
DD/MM/YYYY 12:00:00 AMDD/MM/YYYY 12:00:00 AM
. Provoquera une exception IndexOutOfRange, ce qui est bien par méta consensus.Essayez-le en ligne!
Si nous prenons des informations sous forme de jours depuis l'époque unix, nous pouvons obtenir ceci à ...
83 octets
Essayez-le en ligne!
Nous pouvons jouer au golf encore plus loin avec le
/u:System.Array
drapeau, pour ...78 octets
Essayez-le en ligne!
la source
Perl 5, 130 octets
TIO
la source
Bash, 125 octets
TIO
la source
Perl 6 , 46 octets
Essayez-le en ligne!
Prend une liste de
Date
paires.la source
PHP,
208 197 190177 octetsHunky Chunky était assis sur un mur ... bien que la nouvelle approche ait un certain potentiel de golf.
la fonction prend un tableau de plages [début, fin] au format ISO, imprime les intervalles d'intervalle. Essayez-le en ligne .
panne
la source
Gelée , 13 octets
Jelly (actuellement) n'a pas de dates intégrées, donc cela utilise les jours depuis l'époque.
La liste d'entrée des plages (paires d'entiers) peut être dans un ordre et des directions mixtes.
Le résultat est une liste de plages ascendantes dans l'ordre croissant.
Essayez-le en ligne! (formats de pied de page afin d'afficher une liste vide comme
[]
)Comment?
Remarque: Cela repose sur l'assurance qu '«il n'y a pas de dates qui se chevauchent dans l'entrée» comme indiqué dans les règles.
la source
C # (Visual C # Interactive Compiler) , 103 octets
Essayez-le en ligne!
L'entrée est une liste de tuples de date de début / fin. Sort chaque plage manquante vers STDOUT.
la source
R , 88 octets
Essayez-le en ligne!
Cela prend un bloc de données de plages de dates en entrée et génère un bloc de données avec les plages manquantes. Je suis assez sûr que cela pourrait être joué au golf plus, mais j'ai rencontré des problèmes avec
c
,cbind
et d'autres, en supprimant la classe de date.la source