Trova l'intersezione di 2 set in Notazione intervallo Unioned
Dati due insiemi di numeri reali descritti come l'unione di intervalli, emette una descrizione dell'intersezione di questi due insiemi come unione dello stesso tipo di intervallo.
I set di input saranno sempre costituiti da unioni di intervalli in modo tale che ciascun intervallo inizi e termini con un intero diverso (ovvero nessun intervallo ha misura zero). Tuttavia, intervalli diversi nello stesso set possono iniziare o terminare con lo stesso numero intero o sovrapporsi.
L'insieme di output deve anche essere un unione di intervalli che iniziano e finiscono con numeri interi, ma nessun intervallo nell'output può sovrapporsi a qualsiasi altro anche a un singolo numero intero.
L'input può assumere qualsiasi forma adatta alla tua lingua preferita, purché sia composta da due elenchi di coppie di numeri interi.
Ad esempio, è possibile rappresentare il set come:
[-10,-4]u[1,5]u[19,20]
O come:
[[-10,-4],[1,5],[19,20]]
O come:
[-10,-4;1,5;19,20]
La rappresentazione di output deve essere identica alla rappresentazione di input (tranne per il fatto che è solo un elenco di intervalli anziché due).
Esempi / casi di test:
Ingresso:
[[[-90,-4],[4,90]],[[-50,50]]]
Produzione:
[[-50,-4],[4,50]]
In altre parole, stiamo intersecando l'insieme che contiene tutti i numeri reali tra -90 e -4 e tutti i numeri reali tra 4 e 90 con l'insieme che contiene tutti i numeri reali tra -50 e 50. L'intersezione è l'insieme che contiene tutti numeri reali compresi tra -50 e -4 e tutti i numeri reali compresi tra 4 e 50. Una spiegazione più visiva:
-90~~~~~-4 4~~~~~90 intersected with
-50~~~~~~~~50 yields:
-50~-4 4~~50
Ingresso:
"[-2,0]u[2,4]u[6,8]
[-1,1]u[3,5]u[5,9]"
Produzione:
"[-1,0]u[3,4]u[6,8]"
Ingresso:
[-9,-8;-8,0;-7,-6;-5,-4]
[-7,-5;-1,0;-8,-1]
Produzione:
[-8,0]
Output non valido (anche se rappresenta lo stesso set):
[-8,0;-7,-5;-5,0]
punteggio:
Questo è il code-golf, quindi la fonte più corta in byte vince, potenzialmente modificata dal seguente bonus.
Bonus:
-15% se si supporta anche l'infinito positivo e negativo come limiti di intervalli. Puoi scegliere quali token rappresentano questi numeri. (E sì, l'infinito è un numero negli hyperreals; P)
[[[4,90],[-90,-4]],[[-50,50]]]