В этом ответе предполагается, что входные данные представляют собой список кортежей по четыре пары каждая, например:
$data = {{{3, 1}, {4, 1}, {5, 1}, {6, 1}} , {{1, 1}, {1, 2}, {2, 3}, {6, 1}}};
Используя Cases
, можно назвать и сравнить первые элементы каждой пары, чтобы убедиться, чтоони неравны:
Cases[
$data
, {{a_, _}, {b_, _}, {c_, _}, {d_, _}} /; Unequal[a, b, c, d]
]
Другое использование Cases
сравнивает первые элементы каждой пары, не называя их:
Cases[
$data
, tuple_ /; Unequal @@ tuple[[All, 1]]
]
В качестве альтернативы можно использовать DeleteCases
и исключить кортежихотя бы с двумя парами с одинаковым начальным значением:
DeleteCases[
$data
, {___, {a_, _}, ___, {a_, _}, ___}
]
Можно подумать, что это последнее выражение может быть:
(* warning: does not work *)
Cases[$data, Except[{___, {a_, _}, ___, {a_, _}, ___}]]
... но Except
не разрешает именованныешаблоны в первом аргументе.