Dato un elenco di intervalli, eseguirne l'unione e ridurre le sovrapposizioni. Ciò significa che le parti sovrapposte sono ridotte. ( [a, b] U [c, d] = [a, d]if b > c) Supponendo che tutto a <b in tutti gli intervalli [a, b]. Implementare in funzione di un elenco di intervalli di input -> elenco di intervalli di output. Il codice più corto vince. Non è possibile utilizzare alcuna libreria esistente.
chiarimenti:
- Gli intervalli aperti e chiusi non si distinguono.
- Intervalli per numeri reali, non numeri interi. (
[2, 3], [4, 5] -> [2, 3], [4, 5]) - Non è necessario ordinare gli intervalli di output
- L'ordine se gli input non contano
- Gli input illegali sono solo
[a, b]doveb >= a, non ha nulla a che fare con l'ordine degli intervalli di input e il numero di intervalli di input. - Non è necessario mostrare un messaggio di errore su comportamenti indefiniti
Esempi (con righe numeriche)
[2, 4], [7, 9] --> [2, 4], [7, 9]
234
789
-> 234 789
[1, 5], [2, 10] --> [1, 10] (overlapping [2, 5] reduced)
12345
234567890
-> 1234567890
[2, 4], [3, 6], [8, 9] -> [2, 6], [8, 9]
234
3456
89
-> 23456 89
[4, 2], [2, 2] -> (undefined behavior: against the assumption)