Trouver l'intersection de 2 ensembles dans la notation d'intervalle unifié
Étant donné deux ensembles de nombres réels décrits comme l'union d'intervalles, affichez une description de l'intersection de ces deux ensembles comme une union du même type d'intervalle.
Les ensembles d'entrée seront toujours constitués d'unions d'intervalles de sorte que chaque intervalle commence et se termine à un entier différent (c'est-à-dire qu'aucun intervalle n'a la mesure zéro). Cependant, différents intervalles dans le même ensemble peuvent commencer ou se terminer au même entier ou se chevaucher.
L'ensemble de sortie doit également être une union d'intervalles qui commencent et se terminent à des entiers, mais aucun intervalle dans la sortie ne peut se chevaucher, même à un seul entier.
L'entrée peut prendre n'importe quelle forme adaptée à la langue de votre choix, à condition qu'elle se compose de deux listes de paires d'entiers.
Par exemple, vous pouvez représenter l'ensemble comme:
[-10,-4]u[1,5]u[19,20]
Ou comme:
[[-10,-4],[1,5],[19,20]]
Ou comme:
[-10,-4;1,5;19,20]
Votre représentation de sortie doit être identique à votre représentation d'entrée (sauf qu'il ne s'agit que d'une liste d'intervalles au lieu de deux).
Exemples / cas de test:
Contribution:
[[[-90,-4],[4,90]],[[-50,50]]]
Production:
[[-50,-4],[4,50]]
En d'autres termes, nous croisons l'ensemble qui contient tous les nombres réels entre -90 et -4 et tous les nombres réels entre 4 et 90 avec l'ensemble qui contient tous les nombres réels entre -50 et 50. L'intersection est l'ensemble contenant tous les nombres réels entre -50 et -4 et tous les nombres réels entre 4 et 50. Une explication plus visuelle:
-90~~~~~-4 4~~~~~90 intersected with
-50~~~~~~~~50 yields:
-50~-4 4~~50
Contribution:
"[-2,0]u[2,4]u[6,8]
[-1,1]u[3,5]u[5,9]"
Production:
"[-1,0]u[3,4]u[6,8]"
Contribution:
[-9,-8;-8,0;-7,-6;-5,-4]
[-7,-5;-1,0;-8,-1]
Production:
[-8,0]
Sortie non valide (même si elle représente le même ensemble):
[-8,0;-7,-5;-5,0]
Notation:
C'est le code-golf, donc la source la plus courte en octets gagne, comme potentiellement modifiée par le bonus suivant.
Prime:
-15% si vous supportez également l'infini positif et négatif comme bornes d'intervalles. Vous pouvez choisir quel (s) jeton (s) représentent ces numéros. (Et oui, l'infini est un nombre dans les hyperréalités; P)
[[[4,90],[-90,-4]],[[-50,50]]]