Учитывая список объектов и нетранзитивную функцию равенства, которая возвращает true, когда два объекта равны, а в противном случае возвращает false, мне нужно найти все самые большие подсписки, в которых хотя бы два объекта равны. Например -
val list = List(o1, o2, o3, o4, o5)
а также,
isEqual(o1, o2) => true
isEqual(o2, o4) => true
isEqual(o3, o5) => true
Результат будет:
List(o1, o2, o4)
List(o3, o5)
Обратите внимание, что isEqual не является транзитивным, т.е. в приведенном выше случае o1
может не совпадать с o4
, даже если они принадлежат одному и тому же подсписку.