Моя математика меня подводит! Мне нужен эффективный способ сокращения сетевых диапазонов до суперсетов, например если я ввожу список диапазонов IP:
- 1.1.1.1 to 2.2.2.5
- 1.1.1.2 to 2.2.2.4
- 10.5.5.5 to 155.5.5.5
- 10.5.5.6 to 10.5.5.7
Я хочу вернуть следующие диапазоны:
- 1.1.1.1 to 2.2.2.5
- 10.5.5.5 to 155.5.5.5
Примечание: списки ввода не упорядочены (хотя они могут быть?). Наивный способ сделать это - проверить каждый диапазон в списке, чтобы увидеть, является ли входной диапазон x подмножеством, и если да, НЕ вставлять диапазон x. Однако всякий раз, когда вы вставляете новый диапазон, он может быть надмножеством существующих диапазонов, поэтому вам нужно проверить существующие диапазоны, чтобы увидеть, можно ли их свернуть (например, удалить из моего списка).